WP8中引用资源字典
当我们定义的样式太多的时候,我们可以把样式分别定义在不同的文件中,然后通过 MergedDictionaries 应用到其他资源字典中,看下面Demo
我们可以把样式定义在多个文件中,然后再App.xaml中引用
我们先定义三个文件
1、蓝色按钮资源文件,定义按钮的Foreground为Blue
<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><Style TargetType="Button"><Setter Property="Foreground" Value="Blue"></Setter></Style></ResourceDictionary>
2、红色按钮资源文件,定义按钮的Foreground为Red
<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><Style TargetType="Button"><Setter Property="Foreground" Value="Red"></Setter></Style></ResourceDictionary>
3、全局资源文件(在App.xaml引用),这里只定义TextBlock为Teal
<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><Style TargetType="TextBlock"><Setter Property="Foreground" Value="Teal"></Setter></Style></ResourceDictionary>
然后再App.xaml全局引用全局资源文件
<!--应用程序资源--><Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><!--这里引用其他文件,当然,也可以设置多个ResourceDictionary--><ResourceDictionary Source="GlobalResourceDictionary.xaml"/></ResourceDictionary.MergedDictionaries><!--这里定义其他样式--><Style TargetType="TextBlock"><Setter Property="Foreground" Value="Teal"></Setter></Style><Style TargetType="Rectangle"><Setter Property="Fill" Value="{StaticResource PhoneAccentBrush}"></Setter></Style></ResourceDictionary></Application.Resources>
前面蓝色和红色按钮的两个资源文件,可以用来当成不同的主题,我们可以在代码中动态加载
ResourceDictionary resourceDictionary = new ResourceDictionary();//这里的Uri格式:/解决方案;component/资源文件路径Application.LoadComponent(resourceDictionary, new Uri("/LoadResourceDictionary;component/BlueButtonResource.xaml", UriKind.Relative));Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);