WPF代码动态引用Style资源

本文档详细介绍了在C#开发中如何根据初始化数据进行界面初始化,并动态引用Style资源。内容包括从App.xaml全局引用及在布局文件中局部引用ResourceDictionary的方法,提供了具体的XML代码示例,便于开发者理解和应用。
摘要由CSDN通过智能技术生成

最近工作中经常要根据初始化的数据进行界面初始化,而且还要代码动态引用Style资源,网上的资料实在时太少了,之前没有做过C#的开发,找的太辛苦了,所以将下面两种方法记录,方便自己后面会用到,也方便小伙伴们。

一、 如果资源声明在App.xaml文件中 

首先说明App.xaml时程序自带的, 不知道的小伙伴可以找一找;声明在App.xaml里面的资源可以作为全局引用,声明方法如下

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Themes/Styles/ScriptTreeViewStyle.xaml"/>
                <ResourceDictionary Source="/多个资源文件在这一一声明"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

声明后如果需要在代码中引用资源,方法如下

treeViewItem.SetValue(TreeViewItem.ItemContainerStyleProperty, Application.Current.Resources["ScriptTreeItemStyle"]);

二、如果资源文件声明在布局文件中

一般我们的资源大多都在布局文件中声明的,在布局文件中声明的资源也只能在该布局文件和类中使用,但是这样声明的资源使用完后会被释放掉,会减少内存的占用,下面是在UserControl里面声明的资源,代码中声明了3个资源

    <UserControl x:Class="AUTOTest.Widgets.ImgCpmpareView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:AUTOTest.Widgets"
             xmlns:img="clr-namespace:AUTOTest.Widgets.Common.ImageDealer"
             mc:Ignorable="d" 
             d:DesignWidth="498">
        <UserControl.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="/Themes/Styles/ToggleButtonStyle.xaml"/>
                    <ResourceDictionary Source="/Themes/Styles/ButtonStyle.xaml"/>
                    <ResourceDictionary Source="/Themes/Styles/MouseOnItemStyle.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </UserControl.Resources>
    </UserControl>

在调用时和全局资源几乎相同,但是要方便很对,其代码如下

label.SetValue(Label.StyleProperty, Resources["MouseOnStyle"]);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

baoolong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值