Wpf 定义一个静态资源EventSetter,独立地为每个使用对象实现

Wpf 定义一个静态资源EventSetter,独立地为每个使用对象实现,wpf,Wpf,我不知道我的措辞是否正确,所以让我进一步解释。 我的项目中有很多列表视图。它们都使用相同的ListViewItem样式,这是一个相当大的代码块,因此我将其作为静态资源保存在App.xaml中,因此我可以从任何地方引用它。 现在我的问题是,对于每个ListViewItem,我希望有一个不同的MouseEvent处理程序。据我所知,这些MouseEvents需要以ListViewItems的样式定义。 所以我继续做了这样的事情(在App.xaml中): 我的问题是,如何为每个使用此样式的对象创建

我不知道我的措辞是否正确,所以让我进一步解释。 我的项目中有很多
列表视图。它们都使用相同的
ListViewItem
样式,这是一个相当大的代码块,因此我将其作为静态资源保存在
App.xaml
中,因此我可以从任何地方引用它。 现在我的问题是,对于每个
ListViewItem
,我希望有一个不同的
MouseEvent
处理程序。据我所知,这些MouseEvents需要以ListViewItems的样式定义。 所以我继续做了这样的事情(在App.xaml中):


我的问题是,如何为每个使用此样式的对象创建一个单独的
MyHandler

另外,我不确定这是否是最好的方法,因此欢迎其他建议。

如果您想为每个使用
ListViewItemStyle
ListViewItemStyle
ListView
都有一个不同的处理程序,您可以为该
ListViewItemStyle
创建一个个性化的样式:

<Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
    <!-- A lot of setters -->            
</Style>

...

<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem" BasedOn="{StaticResource ListViewItemStyle}">
            <EventSetter Event="MouseDown" Handler="MyHandler"/>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

...

这样,您的个性化样式继承了
ListViewItemStyle
中的所有
Setter
Trigger
,但您也可以在这些样式的基础上添加更多内容。

如果不知道这些事件处理程序应该做什么,就无法判断这是否是“最佳方法”,以及为什么它们对于不同的列表视图是不同的。当还有更简单的列表框时,你确定你真的需要列表视图吗?谢谢你的输入,这就是我在这期间所做的。
<Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
    <!-- A lot of setters -->            
</Style>

...

<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem" BasedOn="{StaticResource ListViewItemStyle}">
            <EventSetter Event="MouseDown" Handler="MyHandler"/>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>