WPF C#以编程方式从资源字典添加样式?
问题描述:
我是这个网站的新手,刚刚接触编程,遇到了一个问题。 我正在使用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”资源字典我不确定如何做到这一点。
答
是否有必要将其从代码中更改?有很多方法触发器或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") });
}
}
}
让我知道,如果它适合你。
我有多个按钮,将不同颜色的文本添加到文本块中,这就是为什么我需要编程的原因,因为从我所了解的情况来看,您提供的代码将文本块中的所有样式更改为一种样式。我试过 TextBlock.Inlines.Add(new Run(“text”){Style =(Style)this.FindResource(“stylename”)}); 但它给了我一个错误: 'TextBlock'TargetType与元素'Run'的类型不匹配。 – 2014-12-06 14:43:15
好吧,我改变了资源的样式和名称......试试这个 – 2014-12-06 15:07:05
是的让TargetType运行使它工作!非常感谢! :d – 2014-12-06 15:31:01