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>