c# - 在具有多次运行的 WPF Textblock 中,如何将样式应用于特定的样式?

标签 c# wpf styling

如何不在整个文本 block 上应用样式,而仅在第一次运行(粗体)上应用样式?

我想在 Bold Run 上应用样式“XXXFontName-Bold”,并在其余部分应用样式“XXXFontName-Thin”。

        // add button
        Button btn = new Button();
        TextBlock contextText = new TextBlock();
        contextText.Inlines.Add(new Bold(new Run(label.Substring(0,1))));
        contextText.Inlines.Add(new Style());     <===== OBVIOUS ERROR HERE
        contextText.Inlines.Add(label.Substring(1));
        contextText.FontSize = 25;
        contextText.Style = FindResource("XXXFontName-Thin") as Style;
        btn.Content = contextText;

最佳答案

3 个示例样式,在 XAML 中设置样式和换行符的示例,以及如何在按钮后面的代码中设置它们

您的代码背后:

public MainWindow()
{
    InitializeComponent();

    Button btn = new Button();
    TextBlock contextText = new TextBlock();
    var newRun = new Run("BoldGreenRunStyle");
    newRun.Style = FindResource("BoldGreenRunStyle") as Style;
    contextText.Inlines.Add(newRun);

    newRun = new Run("ItalicRedRunStyle");
    newRun.Style = FindResource("ItalicRedRunStyle") as Style;
    contextText.Inlines.Add(newRun);

    newRun = new Run("ThinPurpleRunStyle");
    newRun.Style = FindResource("ThinPurpleRunStyle") as Style;
    contextText.Inlines.Add(newRun);

    btn.Content = contextText;

    Container.Children.Add(btn);
}

你的XAML

    <Window.Resources>
        <Style TargetType="Run" x:Key="BoldGreenRunStyle">
            <Setter Property="Foreground" Value="Green"></Setter>
            <Setter Property="FontWeight" Value="Bold"></Setter>
        </Style>
        <Style TargetType="Run" x:Key="ItalicRedRunStyle">
            <Setter Property="Foreground" Value="Red"></Setter>
            <Setter Property="FontWeight" Value="Normal"></Setter>
            <Setter Property="FontStyle" Value="Italic"></Setter>
        </Style>
        <Style TargetType="Run" x:Key="ThinPurpleRunStyle">
            <Setter Property="Foreground" Value="Purple"></Setter>
            <Setter Property="FontWeight" Value="Thin"></Setter>
        </Style>
    </Window.Resources>
    <StackPanel x:Name="Container">
        <Label Content="From XAML"></Label>
        <TextBlock>
            <TextBlock.Inlines>
                <Run Style="{StaticResource BoldGreenRunStyle}">BoldGreenRunStyle</Run>
                <LineBreak/>
                <Run Style="{StaticResource ItalicRedRunStyle}">ItalicRedRunStyle</Run>
                <LineBreak/>
                <Run Style="{StaticResource ThinPurpleRunStyle}">ThinPurpleRunStyle</Run>
                <LineBreak/>
            </TextBlock.Inlines>
        </TextBlock>
    </StackPanel>

关于c# - 在具有多次运行的 WPF Textblock 中,如何将样式应用于特定的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33460832/

相关文章:

c# - 通过引用列名查找列索引?

c# - 用于为 Web 应用程序实现文档编辑和查看功能的 API?

c# - 确定.NET中随机生成的代码中是否包含任何淫秽词语的有效方法

c# - 动态创建 Hierarchical ContextMenu MVVM

css - 我可以更改 QToolbar 样式的哪些属性?

c# - 如何在 XBAP 应用程序中使用 BinaryFormatter 反序列化流?

c# - 如何在列表框中显示查询结果?

c# - 将 ObservableCollection 绑定(bind)到 ListBox 的选定项

html - 当空白设置为 nowrap 时,Textarea 不考虑填充

c# - 更改样式控件中的部分控件模板?