En trabajos recientes, a menudo es necesario inicializar la interfaz en función de los datos inicializados, y el código debe hacer referencia de forma dinámica a los recursos de Style. Hay muy pocos materiales en línea. No he desarrollado C# antes y es demasiado difícil de encontrar, por lo que registraré los siguientes dos métodos, lo cual es conveniente para mí y para mis amigos.
1. Si la declaración del recurso está en el archivo App.xaml
En primer lugar, explique que App.xaml viene con el programa, y los amigos que no lo conocen pueden buscarlo, los recursos declarados en App.xaml se pueden usar como referencias globales, y el método de declaración es el siguiente
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes/Styles/ScriptTreeViewStyle.xaml"/>
<ResourceDictionary Source="/多个资源文件在这一一声明"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Después de la declaración, si necesita consultar el recurso en el código, el método es el siguiente
treeViewItem.SetValue(TreeViewItem.ItemContainerStyleProperty, Application.Current.Resources["ScriptTreeItemStyle"]);
2. Si el archivo de recursos se declara en el archivo de diseño
En general, la mayoría de nuestros recursos se declaran en el archivo de diseño, y los recursos declarados en el archivo de diseño solo se pueden usar en el archivo de diseño y la clase, pero los recursos declarados de esta manera se liberarán después de su uso, lo que reducirá el uso de memoria. Los siguientes son los recursos declarados en UserControl, y 3 recursos están declarados en el código
<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>
Es casi lo mismo que los recursos globales cuando se llama, pero es muy conveniente. El código es el siguiente
label.SetValue(Label.StyleProperty, Resources["MouseOnStyle"]);