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

时间:2014-12-06 14:05:10

标签: c# wpf styles resourcedictionary inlines

我是这个网站的新手,也是编程的新手,我遇到了一个问题。 我正在使用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”的资源字典,我不确定如何做到这一点。

1 个答案:

答案 0 :(得分:0)

是否有必要从代码中更改? Triggers或StyleSelectors有很多方法

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

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") });
    }
}
}

请告诉我,如果它对您有用。