WPF C# 以编程方式从资源字典添加样式
本文关键字:资源 字典 添加 样式 方式 编程 WPF | 更新日期: 2023-09-27 18:33:24
我是这个网站的新手,也是编程新手,我遇到了一个问题。我正在使用Visual Studio 2010,C# WPF应用程序。
我的程序中有这样一行代码:
TextBlock.Inlines.Add
(new Run("text"){ Foreground = Brushes.Blue, FontWeight = FontWeights.ExtraBold });
这一行没有任何问题,但是我已经用这些setter制作了一个资源字典,我不确定如何以编程方式为每一行使用它。我尝试了这样的事情,但它没有做任何事情:
TextBlock.Inlines.Add
(new Run("text") { Style = (Style)this.Resources["bluebold"] });
我认为问题可能是我没有调用代码中称为"Styles.xaml"的资源字典,我不确定如何做到这一点。
有必要从代码中更改它吗?有很多方法可以作为触发器或样式选择器
以下是可用于更改代码内部样式的代码:
MainWindow.xaml
<Window x:Class="StylesFromResourceExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style x:Key="RunStyle1" TargetType="{x:Type Run}">
<Setter Property="Foreground" Value="Blue"/>
<Setter Property="FontWeight" Value="ExtraBold"/>
</Style> </Window.Resources>
<Grid>
<TextBlock x:Name="txtBlock" HorizontalAlignment="Left" Text="TextBlock" VerticalAlignment="Top" Height="20" Width="142" />
<Button Width="100" Height="30" Content="Change" Click="Button_Click" />
</Grid>
</Window>
MainWindow.xaml.cs
using System.Windows;
namespace StylesFromResourceExample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
txtBlock.Inlines.Add(new Run("New Text") { Style = (Style)this.FindResource("RunStyle1") });
}
}
}
让我知道,如果它对你有用。
ResourceDictionary res = (ResourceDictionary)Application.LoadComponent(new Uri("TreeStyles.xaml", UriKind.Relative));
TestTree.Style = (Style)res["ProjectTree"];
从资源文件加载样式并以编程方式设置为元素