我在用户控件中有一个名为LauncherView + LauncherViewModel的按钮,我将其添加到名为MainView + MainViewModel的主窗口中。
当我点击按钮时,我想在MainViewModel中捕获事件。我怎么能这样做?
在LauncherViewModel中很容易使用:
RelayCommand launchCommand;
public ICommand LaunchCommand{
get{
if (launchCommand == null){
launchCommand = new RelayCommand(LaunchCommandExecute, CanLaunchCommandExecute);
}
return launchCommand;
}
}
private void LaunchCommandExecute(object parameter){
//Do something to recognize the button.
//Could use ObservableCollection<Module> module_objects
//to match, if I could get the buttons content or name
}
private bool CanLaunchCommandExecute(object parameter){
return true;
}
然而,在MainViewModel中尝试了这个以及希望发生冒泡效果,不幸的是没有这样的运气。
答案 0 :(得分:1)
您可以使用RoutedCommand
代替RelayCommand
来完成此操作。
或者,您的ViewModel
可能会引发父级(MainViewModel
)可以订阅的事件。按下按钮时,您可以简单地举起活动。
答案 1 :(得分:0)
将LaunchCommand更改为依赖项属性,然后将其绑定到声明LauncherView的XAML中的MainWindow命令。