C# 在MVVM中绑定事件并将事件参数作为命令参数传递
我想用ViewModel绑定一个事件 我曾经 clr命名空间:System.Windows.Interactivity;assembly=System.Windows.Interactivity 我也用了触发器C# 在MVVM中绑定事件并将事件参数作为命令参数传递,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,我想用ViewModel绑定一个事件 我曾经 clr命名空间:System.Windows.Interactivity;assembly=System.Windows.Interactivity 我也用了触发器 <Canvas Grid.Row="2" Grid.Column="2" x:Name="InteractiveCanvas" Style="{StaticResource canvasChartStyle}" ClipToBounds="True" >
<Canvas Grid.Row="2" Grid.Column="2" x:Name="InteractiveCanvas" Style="{StaticResource canvasChartStyle}" ClipToBounds="True" >
<intr:Interaction.Triggers>
<intr:EventTrigger EventName="MouseEnter">
<intr:InvokeCommandAction Command="AppointmentEditing" />
</intr:EventTrigger>
</intr:Interaction.Triggers>
</Canvas>
但我需要使用事件参数。在这里我不能得到同样的结果
在wpf中,是否存在绑定事件和获取事件参数的可能性?不使用MVVM lite或PRISM
我只想使用CommandParameter获取事件参数。全部如下:)
看看MVVM Light框架。它们的EventToCommand实现包括一个PassEventArgsToCommand选项
有关更多详细信息,请参阅和Laurent Bugnon的。您可以通过添加DLL来实现:
System.Windows.interactivity
Microsoft.Expression.Interactions
EventName
调用所需的事件;然后在MethodName
中指定您的Method
名称
<Window>
xmlns:wi="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions">
<wi:Interaction.Triggers>
<wi:EventTrigger EventName="SelectionChanged">
<ei:CallMethodAction
TargetObject="{Binding}"
MethodName="ShowCustomer"/>
</wi:EventTrigger>
</wi:Interaction.Triggers>
</Window>
注:这是对这个问题的一个很晚的回答,但我希望它能帮助你。使用CommandParameter是否足够?使用CommandParameter,我们如何将事件参数与CommandParameter绑定为什么你需要在视图模型中使用
EventArgs
?@MikeEason我想知道鼠标的位置,是否有相同的替代方案?但我们如何将mouseeventargs作为参数传递?请检查。这将有助于我不能在这里使用任何框架,你是否可以提出任何纯WPF的想法?使用框架有什么错?你为什么要重新发明轮子?我建议您最好下载MVVMLight源代码,并将相关类(EventToCommand.cs)复制到您自己的库中-@VisakhVA yes使用PassEventArgsToCommand=“True”,然后您必须更改一小部分作为您的命令。这样做无需添加另一个库即可获得事件参数。@hfann:我可以问一下如何操作?因为Interaction.Triggers、EventTrigger和CallMethodAction是上述程序集的一部分。当我提到libaray时,我指的是MVVMLight或Prism。我已经在使用System.Windows.Interactivityu DLL了。这实际上意味着需要使用上面提到的DLL。
<Window>
xmlns:wi="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions">
<wi:Interaction.Triggers>
<wi:EventTrigger EventName="SelectionChanged">
<ei:CallMethodAction
TargetObject="{Binding}"
MethodName="ShowCustomer"/>
</wi:EventTrigger>
</wi:Interaction.Triggers>
</Window>
public void ShowCustomer()
//The method must be public & can take 0 parameters or 2 parameters i.e.
//object sender & EventArgs args
{
// Do something.
}