允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://chengxingliang.blog.51cto.com/3972944/886643

  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 下载,谢谢~

本文出自 “程兴亮-Silverlight” 博客,请务必保留此出处http://chengxingliang.blog.51cto.com/3972944/886643

Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary的更多相关文章

  1. Silverlight实用窍门系列:2.Silverlight动态加载外部XML指定地址的WebService---(动态加载外部XML文件中指定的WebService地址)【附带实例源码】

    接上节所讲的,Silverlight可以加载外部的XML文件里面的内容,那么我们可不可以在外部XML里面配置一个WebService地址,并且以此加载这个地址来动态加载WebService呢?这样子就 ...

  2. [转载]Silverlight实用窍门系列:71.Silverlight的Style

    本文版权归作者和博客园共有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 原文链接:http://www.cnblogs.com/chengx ...

  3. Silverlight实用窍门系列:47.Silverlight中元素到元素的绑定,以及ObservableCollection和List的使用区别

    问题一:在某一些情况下,我们使用MVVM模式的时候,对于某一个字段(AgeField)需要在前台的很多个控件(A.B.C.D.E)进行绑定,但是如何能够让我们后台字段名改变的时候能够非常方便的改变所有 ...

  4. 转载 Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))

    转载:程兴亮文章,地址;http://www.cnblogs.com/chengxingliang/archive/2011/02/07/1949579.html 使用WebClient读取XAP包同 ...

  5. Silverlight实用窍门系列:57.Silverlight中的Binding使用(二)-数据验证

    本文将简单讲述Silverlight中的Binding数据时的数据验证. NotifyOnValidationError:是否在出现异常/错误信息的时候激发BindingValidationError ...

  6. Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))【附带实例源码】

    使用WebClient读取XAP包同目录下的XML文件 我们想要读取XAP包下面的XML文件,需要将此XML文件放在加载XAP包的网页的目录中去,然后使用URI方式读取此URL方式下的XML文件. 首 ...

  7. Windows 8实用窍门系列:20.Windows 8中的GridView使用(二)和DataTemplateSelector

    在本文中所讲述内容的实例仍然沿用于上篇文章,有什么疑惑可以参考上篇文章. 一 GroupStyle 在GridView控件中我们可以对数据进行分组显示,通过对GridView的GroupStyle进行 ...

  8. Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate

    Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate 2012-12-28 21:04 来源:博客园 作者:chengxingli ...

  9. 系列文章--Silverlight与WCF通信

    Silverlight与WCF通信(一) :Silverlight通过httpBinding访问IIS宿主WCF 摘要: 首语本人在学习Silverlight 和 WCF的时候,各种问题层出不穷,在园 ...

随机推荐

  1. python中list列表的方法len()

    作用:返回列表中元素的个数. 用法: len(list)

  2. 理念的创新——从keep和得到app谈起

    浅谈keep创新之路 不得不说,这是一个健康越来越重要的时代,也是身体素质越来越被重视的一个年代.随着交通工具日新月异地发展,我们不太需要再徒步远行,甚至连骑自行车的机会也越来越少,这给我们的出行带来 ...

  3. C#.NET XML报文签名与验签

    -- MD5Util: using System; using System.Collections.Generic; using System.Security.Cryptography; usin ...

  4. HTTP Request & Response

    Request & Response header details can be found here The request method indicates the method to b ...

  5. git 更新远程分支列表

    git remote update origin --prune git remote update origin -p

  6. 数据恢复工具--extundelete的安装与使用

    1.extundelete的恢复原理 extundelete恢复文件时并不依赖特定文件格式,首先extundelete会通过文件系统的inode信息,来获得当前文件系统下所有文件的信息,包括存在的和已 ...

  7. Filedset

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Scrapy学习篇(十一)之设置随机User-Agent

    大多数情况下,网站都会根据我们的请求头信息来区分你是不是一个爬虫程序,如果一旦识别出这是一个爬虫程序,很容易就会拒绝我们的请求,因此我们需要给我们的爬虫手动添加请求头信息,来模拟浏览器的行为,但是当我 ...

  9. 内训--PPT演示技巧

    企业内训,实操,不涉及如何做PPT,仅讲解PPT播放等内容.做好PPT后,在演讲的过程中,如何使用这些功能.

  10. WPF 重写ListBox(透明效果)

    <UserControl d:DesignHeight="460" d:DesignWidth="300" x:Name="UCcontrol& ...