最近工作中经常要根据初始化的数据进行界面初始化,而且还要代码动态引用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"]);