将RelayCommand绑定到Button Click或CodeBehind

时间:2017-11-19 17:57:39

标签: c# wpf mvvm relaycommand frameworkelement

我希望将绑定RelayCommand绑定到Button Click事件(我知道我可以绑定到命令属性但我想绑定到click事件) 我怎么能这样做?我使用了这段代码但没有工作:

private void Button_Clicked(object sender, RoutedEventArgs e) { 
FrameworkElement fe=sender as FrameworkElement;
((FirstViewModel)fe.DataContext).ShowSecondViewCommand();     
} 

我的一些个人控件没有此属性(命令)所以我无法将命令绑定到命令属性

2 个答案:

答案 0 :(得分:0)

假设你有正确的xaml绑定命令。以下代码将执行分配给按钮的命令:

private void Button_Clicked(object sender, RoutedEventArgs e) { 
    var button = sender as Button;
    if(button.Command != null){
        button.Command.Execute(null);
    }
} 

答案 1 :(得分:0)

您需要使用InvokeCommandAction类来执行此操作,或使用MVVMLight中的EventToCommand

<Button xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <i:InvokeCommandAction Command="{Binding Path=SomeCommand, Mode=OneWay}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

老实说,这不是最佳做法。您的控件是否可以简单地公开Command属性?