替换 RichTextBox 内容绑定到空字符串

replace RichTextBox content binds to empty string

在 WPF(.Net 4.5) 中,我的 xaml

中有 RichTextBox
    <RichTextBox Height="40" Width="100">
        <FlowDocument>
            <Paragraph>
                <Run Text="{Binding TestRichTextBox}"/>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>

in 和 ViewModel 我有这个 属性

string testRichTextBox;
public string TestRichTextBox
{
    get { return testRichTextBox; }
    set 
    {
        if (testRichTextBox == value)
            return;
        testRichTextBox = value;
        onPropertyChanged("TestRichTextBox"); 
    }
}

场景:

  1. RichTextBox 有内容

  2. select 所有文本 (ctrl+A)

  3. 粘贴新文本

在 ViewModel 中,我在 set 方法上设置了断点,新的 Value 是空字符串。

这是正常行为还是错误?

你能试试这个并检查 var text 是否返回任何值吗?

public Window1()
{
    InitializeComponent();

    // "tb" is a richtextBox
    DataObject.AddPastingHandler(tb, OnPaste);
}

private void OnPaste(object sender, DataObjectPastingEventArgs e)
{
    var isText = e.SourceDataObject.GetDataPresent(DataFormats.UnicodeText, true);
    if (!isText) return;

    var text = e.SourceDataObject.GetData(DataFormats.UnicodeText) as string;
    ...
}