来自自定义画布的Fire命令

时间:2013-12-26 21:27:30

标签: c# wpf canvas mvvm

我使用MVVM模式开发应用程序。在我的viewmodel项目中,我有自定义Command。在视图我有自定义画布。 我想从我的画布代码后面发出命令,但我不知道如何。

我的应用启动(启动在其他项目中):

private void ApplicationStartup(object sender, StartupEventArgs e)
{
   // init main ViewModel
   var viewModel = new MainViewModel(Container);
   // init and show window
   var mainWindow = new MainWindow();
   mainWindow.Show();
   mainWindow.DataContext = viewModel;
}

我不想在View中引用ViewModel,因为我需要引用ViewModel中的View。

谢谢!

1 个答案:

答案 0 :(得分:1)

通常这样做的方法是在CustomCanvas类中实现自己的COMMAND。之后,将该命令绑定到viewmodel中的命令处理程序。

就像使用按钮一样:

<Button
  Command="{Binding YourVmCommand}"
/>

有道理吗?

要实现此类功能,您需要破解ButtonBase.cs并查看它是如何完成的。 涉及的代码很多,但这个想法非常简单。

1)在视图中创建新属性。

public ICommand Command { get; set; }

2)在XAML中绑定它

3)在需要时在View中执行。

if(Command != null && Command.CanExecute(parameter))
  Command.Execute(parameter);