我正在创建一个包含WPF用户控件的类库项目。 我的要求是所有控件都具有相同的样式。我的项目看起来像:
我为解决这个问题所做的一切:
在 AssemblyInfo.cs 中我添加了:
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
添加 ResourceDictionary1.xaml 添加样式的项目。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="Brush1" Color="#FF19199E"/>
</ResourceDictionary>
现在,如果我想在我的 UserControl1.xaml 上使用一种风格,我会这样做:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ResourceDictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid >
<Rectangle Fill="{StaticResource Brush1}" />
</Grid>
我知道它的效果很好,但这里有捕捉。每次我创建一个新的userControl时,我都要合并字典。在常规WPF应用程序上,我可以在App.xaml上合并一次字典,然后我就可以在整个应用程序中使用该字典。 每次创建新的userControl时,如何避免必须合并字典?如果我计划添加新的资源字典,我将不得不转到所有userControl并合并另一个字典。 也许我错误地写了问题标题,我的问题应该是如何将App.xaml文件添加到类库项目
答案 0 :(得分:-1)
您应该像以下内容一样替换源ResourceDictionary1.xaml
:
Source="pack://application:,,,/ControlsDLL;component/ResourceDictionary1.xaml">
或者只是简单如下:
<UserControl.Resources>
<ResourceDictionary Source="pack://application:,,,/ControlsDLL;component/ResourceDictionary1.xaml"></ResourceDictionary>
</UserControl.Resources>