2014-12-06 98 views
0

我是这个网站的新手,刚刚接触编程,遇到了一个问题。 我正在使用Visual Studio 2010,C#WPF应用程序。WPF C#以编程方式从资源字典添加样式?

我有这行代码在我的程序:

TextBlock.Inlines.Add 
        (new Run("text"){ Foreground = Brushes.Blue, FontWeight = FontWeights.ExtraBold }); 

此行没有任何问题,但我有资源字典已经与制定者量身定做的,我不知道我怎么能以编程方式为每一行使用它。我想是这样的,但它没有做任何事情:

TextBlock.Inlines.Add 
      (new Run("text") { Style = (Style)this.Resources["bluebold"] }); 

我觉得这个问题可能是,我不是要求其在代码中,我称之为“Styles.xaml”资源字典我不确定如何做到这一点。

回答

0

是否有必要将其从代码中更改?有很多方法触发器或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") }); 
    } 
} 
} 

让我知道,如果它适合你。

+0

我有多个按钮,将不同颜色的文本添加到文本块中,这就是为什么我需要编程的原因,因为从我所了解的情况来看,您提供的代码将文本块中的所有样式更改为一种样式。我试过 TextBlock.Inlines.Add(new Run(“text”){Style =(Style)this.FindResource(“stylename”)}); 但它给了我一个错误: 'TextBlock'TargetType与元素'Run'的类型不匹配。 – 2014-12-06 14:43:15

+0

好吧,我改变了资源的样式和名称......试试这个 – 2014-12-06 15:07:05

+0

是的让TargetType运行使它工作!非常感谢! :d – 2014-12-06 15:31:01