Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary

Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary,第1张

概述  ResourceDictionary是一个键控对象字典,可在 XAML 和代码中使用。在其中我们可以定义样式、模板等以方便在其他页面中随时调用。   首先我们新建一个ResourceDictionary页面如下图:   然后向资源字典文件中写入以下代码,分别是样式和模板: <ResourceDictionary xmlns="http://schemas.microsoft.co

  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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1067609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存