我需要将应用程序样式分成几个xaml文件。 但我还需要定义一些共享值,如
<x:Double x:Key="SharedValue">100</x:Double>
在单个文件中,以便在其他文件中定义的样式中使用此值。 例如:
<Style x:Name="SomeStyle" TargetType="TextBox">
<Setter Property="Width" Value="{StaticResource SharedValue}"/>
</Style>
并在另一个资源字典文件中:
<Style x:Name="AnotherStyle" TargetType="Button">
<Setter Property="Height" Value="{StaticResource SharedValue}"/>
</Style>
但是当我尝试在App.xaml文件中定义合并资源字典时
<Application.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="DefinedValues.xaml"/>
<ResourceDictionary Source="Styles1.xaml"/>
<ResourceDictionary Source="Styles2.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
我收到此运行时异常:“Message =”找不到名称/密钥SharedValue的资源“
你能告诉我这样做是否可行以及我做错了什么? 感谢。
答案 0 :(得分:9)
如果你有其他合并字典之间的依赖关系,使用合并字典可能会有点棘手。
当您有多个应用程序范围资源时,声明的顺序很重要。它们按照声明的逆序排列,所以在你的情况下你应该有订单。
<Application.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles1.xaml"/>
<ResourceDictionary Source="Styles2.xaml"/>
<ResourceDictionary Source="DefinedValues.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
此外,您可能需要在Styles1.xaml中引用其他ResourceDictionary。这在Styles1.xaml中适用于我。
<ResourceDictionary "...">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="SharedValues.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Name="AnotherStyle"
TargetType="Button">
<Setter Property="Height"
Value="{StaticResource SharedValue}" />
</Style>
</ResourceDictionary>