我正在使用 System.Windows.Interactivity.dll 和 Microsoft.Expression.Interaction.dll 在我的 MVVM WPF 项目中的 Viewmodel 中进行事件处理。下面是我的 Xaml 中的代码:
<ItemsControl ItemsSource="{Binding Path= HeaderList}" Grid.Row="0" Grid.Column="0" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}" Width="100" HorizontalAlignment="Left" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseLeftButtonDown">
<ie:CallMethodAction MethodName="PrevMouseDownEventHandler" TargetObject="{Binding}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
为此,我在同一个 Xaml 中添加了命名空间。
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ie="http://schemas.microsoft.com/expression/2010/interactions"
在我的视图模型中,我创建了一个PrevMouseDownEventHandler
名称与我在 Xaml 中的 EventTigger 中提到的 CallMethod 名称相同的方法。
在运行我的应用程序时,当我在 TextBlock 事件上按下鼠标按钮时,会生成并查找方 PrevMouseDownEventHandler
法并让我陷入以下异常:
Could not find method named 'PrevMouseDownEventHandler' on object of type 'string' that matches the expected signature.
此方法在我的 ViewModel 中如下所示。
public void PrevMouseMoveEventHandler(object sender, MouseButtonEventArgs e)
{
// Some implementation here;
}
我不知道我哪里出错了。除此之外,Viewmodel 中的所有功能对我来说都可以正常工作。对此有什么可能的解决方案?