如何在我的用户控件中接受剪贴板中的粘贴?

5 wpf clipboard copy-paste

我有一个 UserControl,奇怪的是,它将一堆其他控件和逻辑捆绑到一个整洁的小包中。它有一个 Text 属性,它接受 astring并执行魔法,为用户显示结果。惊人的。

我从文本框中获取该文本。用户将剪贴板中的文本粘贴到文本框中,该文本框绑定到我的 UserControl 上的 DP。

我想做的是去掉中间人并接受我的用户控件中的粘贴。

我已经尝试使用DataObject.Pasting附加事件,但这似乎不起作用。

你怎么做呢?


用我当前的解决方案回答了我自己的问题,但老实说它“闻起来”。如果有人有更好的答案,请添加它,如果它有效并且更好,我会选择它。

小智 4

我的大脑开火了。 命令绑定。现在我知道何时有人尝试粘贴并可以从那里取出它。

XAML:

<UserControl.CommandBindings>
    <CommandBinding
        Command="Paste"
        Executed="CommandBinding_Executed"/>
</UserControl.CommandBindings>
Run Code Online (Sandbox Code Playgroud)

(请原谅错误的代码;现在尝试让它工作)以及事件处理程序:

try
{
    var text = Clipboard.GetData(DataFormats.Text) as string;
    if (string.IsNullOrWhiteSpace(text))
        return;
    Lines = new Lines(text);
    e.Handled = true;
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message, "Paste failed", MessageBoxButton.OK);
}
Run Code Online (Sandbox Code Playgroud)

这闻起来,恕我直言。但我不知道还能如何处理这个问题。