Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将应用程序资源移动到外部程序集?_C#_Wpf_Xaml_App.xaml - Fatal编程技术网

C# 如何将应用程序资源移动到外部程序集?

C# 如何将应用程序资源移动到外部程序集?,c#,wpf,xaml,app.xaml,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="{StaticReso

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

您需要制作资源程序集。在这里,您可以阅读如何创建它:

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

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

下面的快照应该为您提供全局视图

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

现在,在您的app.xaml文件中添加一个引用,以引用该ControlLibrary程序集

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


这篇精彩文章提供了更多提示和最佳实践,这是一种超干净的XAML文件组织方法!