事件绑定有至少两种方法
这里只会讲这两种,其他方法请自行研究
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