2010-08-13 55 views
3

我有一个用户控件,奇怪的是,将一堆其他控件和逻辑捆绑到一个整洁的小包中。它有一个Text属性,它接受string并做魔术,显示用户的结果。真棒。如何在我的UserControl中接受来自剪贴板的粘贴?

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

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

我已经尝试使用附加的DataObject.Pasting事件,但看起来不起作用。

你怎么做到的?


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

回答

2

我的大脑被解雇了。 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); 
} 

这气味,恕我直言。但我不知道如何处理这个问题。