我希望有人可以帮助我。我正在尝试使用MVVM将传统的winforms应用程序转换为WPF。我已将应用程序的主窗口分成4个主要的UserControls。 UserControls显示不同类型的数据对象,每个UserControl都有自己的ViewModel。一些数据对象可以在不同的UserControl之间互换,例如'User Control 1'可以包含字符串对象,因此'User Control 2和'User Control 3'也可以(见下图)。
我的问题是如何处理工具栏中的剪切,复制,粘贴命令?为了使事情变得更复杂,每个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
}
答案 0 :(得分:0)
我成功使用了this question中描述的行为方法,以避免在我的视图模型中放入任何代码。然后,只要焦点转到具有定义复制/粘贴行为的控件,工具栏剪切/复制/粘贴按钮就会“点亮”。