Prism.Mvvm绑定事件怎样接收参数
时间: 2023-12-13 12:03:42 浏览: 154
在使用Prism.Mvvm进行绑定事件时,可以使用以下方法来接收参数:
1. 使用CommandParameter属性传递参数:在View中使用CommandParameter属性传递参数,并在ViewModel中使用CommandParameter属性接收参数。
例如,在View中定义一个名为"SayHelloButton"的按钮:
```xaml
<Button x:Name="SayHelloButton" Content="Say Hello" Command="{Binding SayHelloCommand}" CommandParameter="Prism.Mvvm" />
```
在ViewModel中使用CommandParameter属性接收参数:
```csharp
public ICommand SayHelloCommand { get; set; }
public MyViewModel()
{
SayHelloCommand = new DelegateCommand<string>(SayHello);
}
private void SayHello(string name)
{
MessageBox.Show($"Hello, {name}!");
}
```
点击按钮时,将会弹出"Hello, Prism.Mvvm!"的消息框。
2. 使用EventArgs参数传递参数:在View中使用EventToCommand属性绑定事件,并在ViewModel中使用EventArgs参数接收参数。
例如,在View中定义一个名为"MouseDownCanvas"的Canvas:
```xaml
<Canvas x:Name="MouseDownCanvas" Background="White" Width="200" Height="200">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<i:InvokeCommandAction Command="{Binding MouseDownCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Canvas>
```
在ViewModel中使用EventArgs参数接收参数:
```csharp
public ICommand MouseDownCommand { get; set; }
public MyViewModel()
{
MouseDownCommand = new DelegateCommand<MouseButtonEventArgs>(MouseDown);
}
private void MouseDown(MouseButtonEventArgs e)
{
MessageBox.Show($"Mouse down at ({e.GetPosition(null).X}, {e.GetPosition(null).Y})");
}
```
在Canvas中按下鼠标时,将会弹出鼠标点击位置的消息框。
这两种方法都可以实现参数的传递与接收。使用CommandParameter属性传递参数更为简单,但只能传递一个参数;使用EventArgs参数传递参数可以传递多个参数,但需要对事件进行绑定。
阅读全文