ResourceDictionary是一个键控对象字典,可在 XAML 和代码中使用。在其中我们可以定义样式、模板等以方便在其他页面中随时调用。
首先我们新建一个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 下载,谢谢~
@H_502_378@ 总结以上是内存溢出为你收集整理的Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary全部内容,希望文章能够帮你解决Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)