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"的资源字典,我不确定如何做到这一点。

WPF C# 以编程方式从资源字典添加样式

有必要从代码中更改它吗?有很多方法可以作为触发器或样式选择器

以下是可用于更改代码内部样式的代码:

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"];

从资源文件加载样式并以编程方式设置为元素