我必须在 WPF RichtTextBox 中检索所选文本的 Foreground 属性,但我认为 TextRange.GetPropertyValue 函数中存在错误。我编写了一个简单的应用程序来测试错误:
<RichTextBox x:Name="rtfBox">
<RichTextBox.Document>
<FlowDocument>
<Paragraph>
<Run>run run run</Run>
<Hyperlink TargetName="http://stackoverflow.com">stackoverflow.com</Hyperlink>
</Paragraph>
</FlowDocument>
</RichTextBox.Document>
</RichTextBox>
<Button Content="Click!" Height="28" Click="Button_Click" />
在后面的代码中:
private void Button_Click(object sender, RoutedEventArgs e)
{
var textrange = new TextRange(rtfBox.Selection.Start, rtfBox.Selection.End);
var propertyValue = textrange.GetPropertyValue(TextElement.ForegroundProperty);
MessageBox.Show(propertyValue.ToString());
}
当我选择 stackoverflow 超链接的前几个字符时,MessageBox 说 Foreground 属性是一个 DependencyProperty.UnsetValue,但是当我选择链接的其他部分时,它会显示真正的前景色。
它看起来像一个错误。
有没有解决这个问题的方法?