Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF如何使用UserControls和WindowsFormsHost处理剪切、复制、粘贴工具栏按钮_Wpf_User Controls_Copy - Fatal编程技术网

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

WPF如何使用UserControls和WindowsFormsHost处理剪切、复制、粘贴工具栏按钮,wpf,user-controls,copy,Wpf,User Controls,Copy,我希望有人能帮我。我正在尝试使用MVVM将旧版winforms应用程序转换为WPF。我已经将应用程序的主窗口分为4个主用户控件。UserControl显示不同类型的数据对象,每个UserControl都有自己的ViewModel。一些数据对象在不同的用户控件之间是可交互更改的,例如“用户控件1”可以包含字符串对象,“用户控件2”和“用户控件3”也可以包含字符串对象,请参见下图 我的问题是如何处理工具栏中的剪切、复制和粘贴命令?为了使事情更加复杂,每个UserControl可以包含一个选定对象,同

我希望有人能帮我。我正在尝试使用MVVM将旧版winforms应用程序转换为WPF。我已经将应用程序的主窗口分为4个主用户控件。UserControl显示不同类型的数据对象,每个UserControl都有自己的ViewModel。一些数据对象在不同的用户控件之间是可交互更改的,例如“用户控件1”可以包含字符串对象,“用户控件2”和“用户控件3”也可以包含字符串对象,请参见下图

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

到目前为止,我已经尝试使用应用程序命令,但我甚至不能让它们启动。我粘贴了一段我认为可以使用下面的应用程序命令工作的代码。如果您能帮上忙,我们将不胜感激

<Button Command="ApplicationCommands.Cut" />

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

首先需要在canExecute\u剪切中启用类似的按钮。e、 CanExecute=true//或者应用程序中的其他条件。嗨,斯特拉顿,对不起,我应该说;根据我的代码要求,我在CanExecute_Cut方法中将e.CanExecute设置为true或false。我只是在这里省略了它,因为目前执行的切和canExecute切从来没有被调用过。
  <UserControl.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Cut" Executed="executed_Cut" CanExecute="canExecute_Cut" />
  </UserControl.CommandBindings>
    public void executed_Cut(Object sender, ExecutedRoutedEventArgs e)
    {
        //execute code here
    }

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