WPF C# - 从 TextBlock 获取内联格式化粗体文本

St.*_*len 5 c# wpf textblock visual-studio

我正在向a 中的元素添加一些TextBlock元素。我正在通过添加.BorderStackPanelTextBlockInlines

单击时,我想获取TextBlock.Here 是我的代码的格式化文本。

public void addText()
{
    TextBlock myText = new TextBlock();
    myText.Inlines.Add(new Bold(new Run("Hello ")));
    myText.Inlines.Add("World!");

    Border myBorder = new Border();
    myBorder.Child = myText;
    myBorder.MouseDown += new MouseButtonEventHandler(Border_Clicked);

    myStackPanel.Children.Add(myBorder);
}

private void Border_Clicked(object sender, MouseButtonEventArgs e)
{
    //Border senderBox = (Border)sender;
    //TextBlock senderText = (TextBlock)senderBox.Child;
    //Bold inline = (Bold) senderText.Inlines.ElementAt(0);
    // How to Output "Hello "?
}
Run Code Online (Sandbox Code Playgroud)

Border_Clicked应该输出“你好”。正如您所看到的,我可以访问粗体文本,但如何输出它?

小智 4

@Helen,有一种方法可以使用 TextRange 从 TextPointer 获取文本。试试这个代码

void myBorder_MouseDown(object sender, MouseButtonEventArgs e)
{
    var senderBox = (Border)sender;
    var senderText = (TextBlock)senderBox.Child;
    var inline = (Bold)senderText.Inlines.ElementAt(0);

    var textRange = new TextRange(inline.ContentStart, inline.ContentEnd);
    Console.WriteLine(textRange.Text);
}
Run Code Online (Sandbox Code Playgroud)