我在一个带有许多UserControls的WPF项目上工作,我试图在我的WPF资源中加入一些理智。
基本文件包含所有视图所需的通用内容,例如颜色:
<!-- Resources.xaml -->
<Color x:Key="FlashOrange">#F59500</Color>
然后,特定于视图的资源文件需要引用FlashOrange:
<!-- ContactViewResources.xaml -->
<DataTrigger Binding="{Binding IsActiveConversation}" Value="True">
<Setter Property="Background" Value="{StaticResource FlashOrange}"/>
</DataTrigger>
最后,我想在我的UserControl中“包含”两者。不幸的是,通过这种方法,我得到了一个关于{StaticResource FalshOrange}没有被定义的例外。
<!-- ContactView.xaml -->
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\Resources.xaml"/>
<ResourceDictionary Source="ContactViewResources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
所有视图文件都在同一个DLL程序集中,并且运行单独的EXE程序集
谢谢!
答案 0 :(得分:2)
将Resources.xaml合并到ContactViewResources.xaml中,因此静态引用在加载时在其资源树中具有指向FlashOrange的直接路径,或者使用DynamicResource。
答案 1 :(得分:1)
要在另一个ResourceDictionary中引用一个ResourceDictionary,请使用要保存引用的ResourceDictionary的MergedDictionary属性。在你的情况下:
<!-- ContactViewResources.xaml -->
<ResourceDictionary ...>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\Resources.xaml"/>
</ResourceDictionary.MergedDictionaries>
...
</ResourceDictionary>