事件绑定有至少两种方法
这里只会讲这两种,其他方法请自行研究
View:
<Button Content="{Binding ButtonContent}" x:Name="button" > <b:Interaction.Triggers> <b:EventTrigger EventName="Click" > <b:CallMethodAction TargetObject="{Binding}" MethodName="Button_Click" /> </b:EventTrigger> </b:Interaction.Triggers> </Button>
ViewModel:
public void Button_Click(object sender, RoutedEventArgs e) { }
这种方式简单,还可以带有事件e,对一些mouse等事件很有用
View:
<b:Interaction.Triggers> <b:EventTrigger EventName="Click" > <b:InvokeCommandAction Command="{Binding MapViewExport_Click}" CommandParameter="{Binding ElementName=button}" /> </b:EventTrigger> </b:Interaction.Triggers>
ViewModel:
private ICommand button_Click; /// <summary> /// 按钮点击事件 /// </summary> public ICommand Button_Click { get { if (button_Click == null) { button_Click = new BaseCommand((param) => { Button button = param as Button; //.... }); } return button_Click; } }
注意如果View里没CommandParameter,ViewModel里就没有param
这种适合传递一个参数的
原文:https://www.cnblogs.com/jhlong/p/14148896.html