FindResource не работает в библиотеке пользовательских элементов управления

1

Хотя я все еще изучаю WPF, у меня еще есть другая проблема. У меня есть DLL, которая имеет тип Custom Control. Я реализовал свой базовый элемент управления, и у меня есть несколько элементов управления, которые основаны на этой базе; базовый элемент управления никогда не используется. Проблема в том, что всякий раз, когда я вызываю FindResource или TryFindResource, он всегда терпит неудачу. У меня есть отдельный словарь, который я объединил в своем файле Themes/Generic.xaml:

Gernieric.xaml

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/DllProject;component/Themes/NewResource.xaml" />
    <!-- I've tried several other ways for the Source format, i.e. pack:... -->
</ResourceDictionary.MergedDictionaries>

Теперь я пытаюсь установить стиль моих производных элементов управления в конструкторе производных элементов управления без контроля на видимом холсте или панели в то время. Я также хочу экспортировать VisualBrush элемента управления в качестве BitmapSource. Весь код работал, когда я поместил свой проект NewResource.xaml в проект EXE (где он не принадлежит). Я прочитал статьи о добавлении фиктивного тега в словарь ресурсов, а также поместил весь свой код в файл Generic.xaml. Как я уже сказал, все это работает, если переместить файл xaml в основной EXE. Как будто DLL даже не загружает файл xaml или даже не знает, что в нем есть что-либо, пока элемент управления не окажется в видимом окне.

У меня есть стиль для моего базового элемента управления (NewResource.xaml):

<Style TargetType="{x:Type local:MyDerivedControl}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:MyDerivedControl}">
                <Grid>
                    <Path x:Name="MyPath" Style="{TemplateBinding DepProp}" />
                    <TextBlock x:Name="Text" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{TemplateBinding Text}"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

После много исследований в Интернете кажется, WPF бросил мяч на DLL и ресурсы.

Теги:
dll
wpf
controls
resourcedictionary

1 ответ

1
Лучший ответ

Я нашел ответ, который сработал. В основном измените x: Ключ, содержащий компонент ComponentResourceKey. Полное описание можно просмотреть здесь, что прямо необходимо понять.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню