Хотя я все еще изучаю 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 и ресурсы.
Я нашел ответ, который сработал. В основном измените x: Ключ, содержащий компонент ComponentResourceKey. Полное описание можно просмотреть здесь, что прямо необходимо понять.