我想在我的WindowsPhone 8.1 Silverlight应用程序的单独文件中定义我的颜色和样式。我的档案:
Colors.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="AppColor1Brush">#1D8530</SolidColorBrush>
</ResourceDictionary>
Styles.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="Text1Style" TargetType="TextBlock">
<Setter Property="Foreground" Value="{StaticResource AppColor1Brush}" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeNormal}"/>
</Style>
</ResourceDictionary>
然后在我的App.xaml文件中,我尝试合并这些资源字典:
的App.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyProject;component/Resources/Colors.xaml" />
<ResourceDictionary Source="/MyProject;component/Resources/Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
但这不起作用。我得到以下异常:
类型的第一次机会异常 'System.Windows.Markup.XamlParseException'发生在 System.Windows.ni.dll
其他信息:无法找到名称/密钥的资源 AppColor1Brush
当我将Colors.xaml中的颜色定义移动到Styles.xaml时,一切正常。所以我的问题:这甚至可能吗?我应该使用StaticResource
以外的其他内容吗?提前致谢
答案 0 :(得分:2)
您必须在Styles.Xaml中引用Colors.Xaml,因为您在那里使用StaticResource引用。每个xaml资源字典都需要在MergedDictionaries中提供所有引用(StaticResources)。
将Styles.Xaml修改为:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyProject;component/Resources/Colors.xaml" />
<!-- Also add the resource reference for your font style PhoneFontSizeNormal -->
</ResourceDictionary.MergedDictionaries>
<Style x:Key="Text1Style" TargetType="TextBlock">
<Setter Property="Foreground" Value="{StaticResource AppColor1Brush}" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeNormal}"/>
</Style>
</ResourceDictionary>