WPF错误:RichTextBox中的TextRange.GetPropertyValue

时间:2012-07-26 11:46:25

标签: c# .net wpf richtextbox flowdocument

我必须在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,但是当我选择链接的其他部分时,它会显示真正的前景色。

它看起来像一个bug。

此问题是否有解决方法?

1 个答案:

答案 0 :(得分:0)

这是因为TextElement.ForegroundProperty。 如果您将其更改为Hyperlink.ForegroundProperty,则会显示真实值。