2014-12-06 128 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

相關問題