Делая WPF dll, где поставить Application.Resources?
Мне нравится менять приложение Windows WPF на библиотеку.dll. В каталоге Windows App.xaml я определил "Application.Resources".
<Application x:Class="WpfApplication13.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style TargetType="Control" x:Key="EmptyFocusVisualStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
Но поскольку в библиотеке dll нет файла App.xaml, куда теперь поместить этот код? Добавить в мой файл "dll-project" новый файл "Словарь ресурсов"? Но это эквивалентно "Application.Resources"?
Пожалуйста, за помощь или любой пример. Если у вас есть какие-либо вопросы, пожалуйста, задавайте.
1 ответ
Решение
В проекте dll добавьте словарь ресурсов.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Control" x:Key="EmptyFocusVisualStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
В приложении, которое использует dll, в app.xaml добавьте словарь ресурсов. В приведенном ниже примере словарь ресурсов находится в проекте MyDll с путем MyDllSubFolder/MyResourceDictionary.xaml.
<Application x:Class="WpfApplication13.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyDll;component/MyDllSubFolder/MyResourceDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style TargetType="Control" x:Key="AStyleThatIsInTheAppAndNotTheDll">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>