如何将 Application.Resources 移动到外部程序集?
How to move Application.Resources to external assembly?
假设我 App.xaml
具有以下内容:
[...]
<Application.Resources>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="BorderBrush" Value="{StaticResource Theme.CheckBox.Border}" />
<Setter Property="Foreground" Value="{StaticResource Theme.Foreground}" />
</Style>
</Application.Resources>
[...]
现在,我想将这些定义移至外部程序集。这样我就可以在我的应用程序中重用 WPF 控件和 window 样式。例如,我可以创建 NuGet 包并在几秒钟内安装这些样式。
您需要进行资源组装。在这里您可以阅读如何创建它:
https://msdn.microsoft.com/en-us/library/aa984332(v=vs.71).aspx
您可以创建一个简单的 classLibrary
项目,在单独的资源字典(推荐)中定义所有样式和模板等,然后将所有这些字典合并到一个字典中。
要使用来自该特定程序集的那些样式,只需在您的 App.Xaml 文件中引用它,
下面的截图应该让你有全局观
我习惯为每个style
创建一个单独的ResourceDictionary
(方便访问),所有这些资源字典都合并在ResourceLibrary.Xaml
现在要引用那个 ControlLibraryAssembly(在添加对它的引用之后),在你的 app.xaml 文件中添加
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ControlLibrary;component/ResourcesDictionaries/ResourceLibrary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
假设我 App.xaml
具有以下内容:
[...]
<Application.Resources>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="BorderBrush" Value="{StaticResource Theme.CheckBox.Border}" />
<Setter Property="Foreground" Value="{StaticResource Theme.Foreground}" />
</Style>
</Application.Resources>
[...]
现在,我想将这些定义移至外部程序集。这样我就可以在我的应用程序中重用 WPF 控件和 window 样式。例如,我可以创建 NuGet 包并在几秒钟内安装这些样式。
您需要进行资源组装。在这里您可以阅读如何创建它: https://msdn.microsoft.com/en-us/library/aa984332(v=vs.71).aspx
您可以创建一个简单的 classLibrary
项目,在单独的资源字典(推荐)中定义所有样式和模板等,然后将所有这些字典合并到一个字典中。
要使用来自该特定程序集的那些样式,只需在您的 App.Xaml 文件中引用它,
下面的截图应该让你有全局观
我习惯为每个style
创建一个单独的ResourceDictionary
(方便访问),所有这些资源字典都合并在ResourceLibrary.Xaml
现在要引用那个 ControlLibraryAssembly(在添加对它的引用之后),在你的 app.xaml 文件中添加
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ControlLibrary;component/ResourcesDictionaries/ResourceLibrary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>