Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary
2012-06-04 11:15
489 查看
ResourceDictionary是一个键控对象字典,可在 XAML 和代码中使用。在其中我们可以定义样式、模板等以方便在其他页面中随时调用。
首先我们新建一个ResourceDictionary页面如下图:
然后向资源字典文件中写入以下代码,分别是样式和模板:
此时我们将此资源字典拷贝一份,仅仅只是将文字样式中的字体颜色从蓝色变为红色。然后我们在App.xaml中加载这两个资源字典,首先加载蓝色字体的资源字典A,然后我们再加载红色字体的资源字典B,代码如下:
加载此资源字典中的资源方法有以下两种:
第一种Xaml直接加载,如下:
第二种后台加载:
效果如下:
从上面的效果来看我们生效的风格样式是红色的第二个资源字典。那时因为<ResourceDictionary.MergedDictionaries>资源字典合并的原因,后面添加的资源字典会覆盖之前的同名key字典资源。
如需源码请点击 SLResDic.zip 下载,谢谢~
首先我们新建一个ResourceDictionary页面如下图:
然后向资源字典文件中写入以下代码,分别是样式和模板:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <!--数据模板--> <DataTemplate x:Key="lbTmp"> <StackPanel Orientation="Vertical" > <StackPanel Orientation="Horizontal" Margin="5" Width="380"> <TextBlock Text="{Binding ArtName}" Style="{StaticResource tbStyle}" Margin="5 10 0 0"></TextBlock> <TextBox Text="{Binding ArtContent}" Name="tbName" Margin="5"></TextBox> <TextBox Text="{Binding ArtAuthor}" Margin="5"></TextBox> <TextBlock Text="{Binding ArtUpdateTime}" Margin="5 10 0 0"></TextBlock> </StackPanel> <StackPanel Orientation="Horizontal" Visibility="Collapsed"> <TextBox Text="{Binding ArtContent}" Width="280"></TextBox> </StackPanel> </StackPanel> </DataTemplate> <!--样式--> <Style x:Key="tbStyle" TargetType="TextBlock"> <Setter Property="FontWeight" Value="Bold"></Setter> <Setter Property="Foreground" Value="Red"></Setter> </Style> </ResourceDictionary>
此时我们将此资源字典拷贝一份,仅仅只是将文字样式中的字体颜色从蓝色变为红色。然后我们在App.xaml中加载这两个资源字典,首先加载蓝色字体的资源字典A,然后我们再加载红色字体的资源字典B,代码如下:
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SLResDic.App" > <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="ResourceDic.xaml" /> <ResourceDictionary Source="ResourceDic2.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>
加载此资源字典中的资源方法有以下两种:
第一种Xaml直接加载,如下:
<Grid x:Name="LayoutRoot" Background="White" DataContext="{StaticResource SourceList}"> <TextBlock Name="tblock" Style="{StaticResource tbStyle}" HorizontalAlignment="Left" Width="100" Text="今天第一"></TextBlock> <ListBox x:Name="lbRes" ItemsSource="{Binding ArticleList}" Margin="0 50 0 0 " ItemTemplate="{StaticResource lbTmp}" HorizontalAlignment="Left" VerticalAlignment="Top" Height="400" > </ListBox> </Grid>
第二种后台加载:
public MainPage() { InitializeComponent(); DataTemplate dtemp = Application.Current.Resources["lbTmp"] as DataTemplate; lbRes.ItemTemplate = dtemp; }
效果如下:
从上面的效果来看我们生效的风格样式是红色的第二个资源字典。那时因为<ResourceDictionary.MergedDictionaries>资源字典合并的原因,后面添加的资源字典会覆盖之前的同名key字典资源。
如需源码请点击 SLResDic.zip 下载,谢谢~
相关文章推荐
- Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary 推荐
- Silverlight实用窍门系列:34.Silverlight中不得不了解使用的依赖属性【附带源码实例】
- Silverlight实用窍门系列:35.细解Silverlight冒泡路由事件和注册冒泡路由事件【附带实例源码】
- Silverlight实用窍门系列:38.Silverlight读取服务器端格式化的Json数据【附带实例源码】
- Silverlight实用窍门系列:65.Silverlight的数据模板DataTemplate(一)使用数据模板 推荐
- Silverlight实用窍门系列:56.Silverlight中的Binding使用(一)【附带实例源码】
- Silverlight实用窍门系列:30.Silverlight中创建一个最简单的WCF RIA Services访问数据库实例【实例源码+数据库下载】
- Silverlight实用窍门系列:47.Silverlight中元素到元素的绑定,以及ObservableCollection和List的使用区别
- Silverlight实用窍门系列:32.WebClient上传String、下载String、上传Stream流、下载Stream流【附带源码实例】
- 转载 Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))
- Silverlight实用窍门系列:72.Silverlight的Implicit Style、自定义主题皮肤、系统主题皮肤
- Silverlight实用窍门系列:66.Silverlight的数据模板DataTemplate(二)获取数据模板控件
- Silverlight实用窍门系列:9.动态生成实体类,根据XML模板使用Emit生成动态类绑定到DataGrid【附代实例源码】
- Silverlight实用窍门系列:10.动态生成DataGrid,动态绑定DataGrid模板列【附带实例源码】
- Silverlight实用窍门系列:59.多个中心点联动多线的可拖动控件扩展为拓扑图
- Silverlight实用窍门系列:17.中心点联动多线的可拖动控件(绘制工程图、拓扑图基础)【附带源码实例】
- Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】
- Silverlight实用窍门系列:36.Silverlight中播放视频和打印文档【附带源码实例】
- Silverlight实用窍门系列:66.Silverlight的数据模板DataTemplate(二)获取数据模板控件
- Silverlight实用窍门系列:57.Silverlight中的Binding使用(二)-数据验证