【问题标题】:WPF Inline Editing in textblock based on linenumbers基于行号的文本块中的 WPF 内联编辑
【发布时间】:2015-10-23 10:48:31
【问题描述】:

我想突出显示文本块中的一些行。这些行是动态决定的。我该怎么做? 例如-我想突出显示所有包含文件标签的行,我该怎么做?

【问题讨论】:

    标签: c# wpf xaml inline textblock


    【解决方案1】:

    以下内容应该适合您:

    foreach(System.Windows.Documents.Run run in textBlock.Inlines.OfType<System.Windows.Documents.Run>())
    {
        if (run.Text.Contains("<files ") || run.Text.Contains("</files>"))
        {
            run.Background = Brushes.Yellow;
        }
    }
    

    如果您需要更大的灵活性,也可以使用正则表达式进行匹配而不是文本比较。

    【讨论】:

    • 我通过附加文本在文本块中添加了文本。因此运行覆盖了文本块中的整个文本,因此这个循环只运行一次。但是我希望突出显示取决于行。
    • 您的示例在每一行都有每个 XML 标记。您现在是说所有文本现在都将在一行上,并且您只想突出显示单行中作为 标记的那些部分吗?
    • 我犯了一些错误。现在我想通了。谢谢!
    【解决方案2】:

    可以使用Textblock inline 做高亮,例如

     TextBlock tb = new TextBlock();
                        tb.TextWrapping = TextWrapping.Wrap;
                        tb.Margin = new Thickness(10);
                        tb.Inlines.Add("<xml...> ");
                        tb.Inlines.Add(new Run("<Configuration ") 
                                           { 
                                             FontWeight = FontWeights.Bold,
                                             Foreground = Brushes.Blue });
    
                        tb.Inlines.Add(new Run( new LineBreak())....
    

    【讨论】:

    • 我怎样才能动态突出显示特定的行号?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多