在 Windows 应用商店应用程序中,我无法通过 StaticResource 绑定将一个资源字典中的资源用作第二个资源字典样式中的属性设置器的值。
这是我正在尝试做的一个例子:
Dictionary1.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="SomeBrush" Color="Black" />
</ResourceDictionary>
Dictionary2.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="SomeStyle" TargetType="Button">
<Setter Property="Foreground" Value="{StaticResource SomeBrush}" />
</Style>
</ResourceDictionary>
应用程序.xaml
<Application
x:Class="TestApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Common/StandardStyles.xaml"/>
<ResourceDictionary Source="Common/Dictionary1.xaml"/>
<ResourceDictionary Source="Common/Dictionary2.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
无论我做什么,这都行不通。该应用程序不会启动,而是抛出一个未处理的异常,其效果是“无法找到具有键 'SomeBrush' 的资源”。
我尝试更改 App.xaml 中的顺序,使用嵌套合并字典等。
我已经设法通过这样做让它工作,但这不是一个选择:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style x:Key="SomeStyle" TargetType="Button">
<Setter Property="Foreground" Value="{StaticResource SomeBrush}" />
</Style>
</ResourceDictionary>
在运行时,App.Resources.MergedDictionaries 被清除,并且根据各种条件动态加载各种资源字典。Dictionary1.xaml 和 Dictionary2.xaml 都是相互独立加载的,并且根据这些条件可能包含不同的资源,因此不能以这种方式合并它们。它们必须在设计时包含在 App.xaml 中以支持....设计。
有谁知道这里发生了什么?这是一个错误吗?
谢谢!