1

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 であると表示しますが、リンクの他の部分を選択すると、実際の前景色が表示されます。

バグのようです。

この問題の回避策はありますか?

4

1 に答える 1

0

これは、TextElement.ForegroundProperty が原因です。に変更するとHyperlink.ForegroundProperty、真の値が表示されます。

于 2012-07-26T11:57:45.157 に答える