基本上我的自定义类中有一个事件。我将使用事件的参数调用自定义类中的特定方法 - >属性作为该方法的参数。
您可以观察此信息背后的实际代码。
instance.FileOpening += (sender, e) =>
{
CustomClass.Method(e.XXproperty, e.YYproperty);
};
但我希望通过交互实现这一点.MVVM中的触发器。所以我在xaml中使用了以下代码。
<i:Interaction.Triggers>
<i:EventTrigger EventName="FileOpening">
<i:FileOpeningAction TargetObject="{Binding ElementName=cntrol}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
我的相应TargetedTriggerAction类来获取我的自定义类来执行该方法。
public class FileOpeningAction :TargetedTriggerAction<CustomClass>
{
protected override void Invoke(object parameter)
{
((instance).TargetObject).Method(?,?);
}
}
但我的问题是如何在上面的操作中传递e.XXproperty和e.YYproperty以在我的自定义类中执行该方法?
答案 0 :(得分:1)
您可以尝试使用交互库,然后您可以写下:
<i:EventTrigger EventName="FileOpening">
<ei:CallMethodAction TargetObject="{Binding}" MethodName="OnFileOpening"/>
</i:EventTrigger>
在你的代码中,它将类似于
public void OnFileOpening(object sender, EventArgs e){//your code}
答案 1 :(得分:0)
如果您按照下面给出的那样,那么您可以通过设置“PassEventArgsToCommand”将事件参数传递给命令。
添加引用:
xmlns:cmd="xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4""
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter" >
<cmd:EventToCommand Command="{Binding FooCommand}"
PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>