从我的命令绑定调用默认的 WPF 文本框粘贴处理程序

Call default WPF Textbox Paste handler from my command binding

我已经声明了一个带有粘贴命令绑定的 WPF 文本框:

<TextBox x:Name="txtMsg">
    <TextBox.CommandBindings>
        <CommandBinding Command="ApplicationCommands.Paste" Executed="TxtMsg_OnPaste"/>
    </TextBox.CommandBindings>
</TextBox>

我的代码隐藏是

private void TxtMsg_OnPaste(object sender, ExecutedRoutedEventArgs e)
{
    if (Clipboard.ContainsText())
    {
        // Let the textbox paste text its normal way
        // This code is called, but the textbox doesn't paste anything!
        e.Handled = false;
    }
    else
    {
        // My logic for other clipboard formats
        // ...
        e.Handled = true;
    }
}

问题是设置 e.Handled = false 不会导致文本框粘贴任何内容。当剪贴板包含文本时没有粘贴任何内容!

在这种情况下,如何让 WPF 文本框正常处理粘贴命令?

对文本框调用 Paste() 方法。或者你可以只获取文本并自己设置它——相同的区别。