2

我有两个字典的问题:

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Styles1.xaml"/>
    <ResourceDictionary Source="Styles2.xaml"/>
</ResourceDictionary.MergedDictionaries>

当我在第一个字典中设置一个资源时,例如颜色。然后它不会在第二本词典中找到它????

第一的:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Color x:Key="ApplicationPageBackgroundColor">#FFFFFFFF</Color>
    <SolidColorBrush x:Key="ApplicationPageBackgroundColorBrush" Color="{StaticResource ApplicationPageBackgroundColor}" />
</ResourceDictionary>

第二:(Setter Property="Background" Value .... 产生错误)

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="LayoutRootStyle" TargetType="Panel">
        <Setter Property="Background" Value="{StaticResource ApplicationPageBackgroundColorBrush}" />
    </Style>
</ResourceDictionary>

如果我将它们放在同一个字典中,它会起作用,有什么建议吗?

4

1 回答 1

0

Styles2.xaml没有参考,Styles1.xaml反之亦然。要使 StaticResource 工作,字典条目必须在使用点(“在范围内”)静态可见。同样,您不能引用稍后在同一 XAML 文件中定义的资源。

在 WPF 中,DynamicResource 可能会执行您想要的操作,但这在 WinRT 中不可用。您必须将第一个资源合并到第二个资源中(并且没有任何循环依赖),或者将共享部分放置在两者都可见的地方(例如Application.Resources)。

于 2013-01-05T22:02:22.787 回答