如何从UserControl中的剪贴板接受粘贴?

时间:2010-08-13 18:39:42

标签: wpf clipboard copy-paste

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

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

我想做的是剪掉中间人并接受我的UserControl中的贴纸。

我已尝试使用DataObject.Pasting附加事件,但似乎无效。

你是怎么做到的?


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

1 个答案:

答案 0 :(得分:3)

我的大脑被解雇了。 Command Bindings。现在我知道有人试图粘贴并且可以从那里拿走它。

XAML:

<UserControl.CommandBindings>
    <CommandBinding
        Command="Paste"
        Executed="CommandBinding_Executed"/>
</UserControl.CommandBindings>

(原谅糟糕的代码;试图让它现在正常工作)和事件处理程序:

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);
}

这闻起来,恕我直言。但我不确定如何处理这个问题。