在UserControl中冒泡按钮命令

时间:2013-12-04 01:31:29

标签: c# wpf viewmodel

我在用户控件中有一个名为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中尝试了这个以及希望发生冒泡效果,不幸的是没有这样的运气。

2 个答案:

答案 0 :(得分:1)

您可以使用RoutedCommand代替RelayCommand来完成此操作。

或者,您的ViewModel可能会引发父级(MainViewModel)可以订阅的事件。按下按钮时,您可以简单地举起活动。

答案 1 :(得分:0)

将LaunchCommand更改为依赖项属性,然后将其绑定到声明LauncherView的XAML中的MainWindow命令。