c# - 如何将 Application.Resources 移动到外部程序集?

标签 c# wpf xaml app.xaml

假设我有包含以下内容的 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 控件和窗口样式。例如,我可以创建 NuGet 包并在几秒钟内安装这些样式。

最佳答案

您可以创建一个简单的 classLibrary 项目,在单独的资源字典中定义所有样式和模板等(推荐),并将所有这些字典合并到一个字典中。

要使用该特定程序集中的这些样式,只需在您的 App.Xaml 文件中引用它即可,

下面的照片应该可以让您了解全局

enter image description here

我习惯于为每个样式创建一个单独的ResourceDictionary(以便于访问),并且所有这些资源字典都合并在ResourceLibrary.Xaml

enter image description here

现在要引用该 ControlLibraryAssembly(添加对它的引用后),请在 app.xaml 文件中添加

 <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/ControlLibrary;component/ResourcesDictionaries/ResourceLibrary.xaml"/>
        </ResourceDictionary.MergedDictionaries>            
    </ResourceDictionary>        
</Application.Resources>

关于c# - 如何将 Application.Resources 移动到外部程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32371414/

相关文章:

c# - WPF 用户控件的加载事件多次触发

c# - 未调用 PropertyChangedCallback

c# - 带绑定(bind)的扩展 WPF 工具包数据网格

c# - WPF旋转按钮

c# - 如果属性在构造函数中初始化,则似乎未设置 XAML 绑定(bind)

c# - 如何使用 C# 获取 HTML &lt;textarea&gt; 值?

c# - 如何通过对话框选择文件夹并处理其中包含的所有文件

c# - linq 中的别名字段

.net - 为什么我应该使用 WPF 而不是 Winforms? WPF 优于 Winforms 的任何示例?

wpf - 如何在 WPF 按钮中绘制与控件大小相同的形状或线条,而不会导致按钮永远展开?