【问题标题】:How to move Application.Resources to external assembly?如何将 Application.Resources 移动到外部程序集?
【发布时间】:2015-11-29 00:56:59
【问题描述】:

假设我有以下内容的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 包并在几秒钟内安装这些样式。

【问题讨论】:

    标签: c# wpf xaml app.xaml


    【解决方案1】:

    您可以创建一个简单的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>
    

    【讨论】:

    【解决方案2】:

    您需要进行资源组装。在这里您可以阅读如何创建它: https://msdn.microsoft.com/en-us/library/aa984332(v=vs.71).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多