WPF如何使用UserControls和WindowsFormsHost处理剪切,复制,粘贴工具栏按钮

时间:2014-02-12 00:03:07

标签: wpf user-controls copy

我希望有人可以帮助我。我正在尝试使用MVVM将传统的winforms应用程序转换为WPF。我已将应用程序的主窗口分成4个主要的UserControls。 UserControls显示不同类型的数据对象,每个UserControl都有自己的ViewModel。一些数据对象可以在不同的UserControl之间互换,例如'User Control 1'可以包含字符串对象,因此'User Control 2和'User Control 3'也可以(见下图)。

enter image description here

我的问题是如何处理工具栏中的剪切,复制,粘贴命令?为了使事情变得更复杂,每个UserControl可以包含一个选定的对象,同时其他UserControl包含一个选定的对象,User Control 2是围绕winforms控件的WindowsFormsHost包装。

到目前为止,我已尝试使用ApplicationCommands,但我甚至无法触发它们。我已经使用下面的ApplicationCommands粘贴了一段我认为可以使用的代码。任何有关这方面的帮助将非常感激。

<Button Command="ApplicationCommands.Cut" />

和UserControls

  <UserControl.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Cut" Executed="executed_Cut" CanExecute="canExecute_Cut" />
  </UserControl.CommandBindings>

最后在UserControl的代码后面(我知道这不是很好)

    public void executed_Cut(Object sender, ExecutedRoutedEventArgs e)
    {
        //execute code here
    }

    public void canExecute_Cut(Object sender, CanExecuteRoutedEventArgs e)
    {
        //can execute code here  
    }

1 个答案:

答案 0 :(得分:0)

我成功使用了this question中描述的行为方法,以避免在我的视图模型中放入任何代码。然后,只要焦点转到具有定义复制/粘贴行为的控件,工具栏剪切/复制/粘贴按钮就会“点亮”。