我是 WPF
的新手,我有一个绑定(bind) listview
使用 gridview
显示对象列表及其属性。我的整个项目都使用 MaterialDesign
中的自定义样式,它为所有内容提供了一个深色主题。
我想为我的 listview
中的项目添加 doubleclick
功能,我发现,我可以通过更改 ListViewItem
的样式来实现>。然而,这覆盖了我的 MaterialDesign
主题的默认样式,并且项目变得丑陋。
然后我添加了 BasedOn="{StaticResource {x:Type ListViewItem}}"
来恢复默认样式,但是绑定(bind)停止工作并且停止显示对象的属性?
是否有更好的方法将 Setters 添加到元素的样式中? 设置样式如何改变数据绑定(bind)?
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListViewItem}}">
<EventSetter Event="MouseDoubleClick" Handler="HitsoundLayer_MouseDoubleClick"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="_Name" Width="120" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="_Amount" Width="90" DisplayMemberBinding="{Binding Times.Count}" />
<GridViewColumn Header="_SampleSet" Width="120" DisplayMemberBinding="{Binding SampleSetString}" />
<GridViewColumn Header="_Hitsound" Width="120" DisplayMemberBinding="{Binding HitsoundString}" />
<GridViewColumn Header="_Sample Path" Width="1000" DisplayMemberBinding="{Binding SamplePath}" />
</GridView>
</ListView.View>
最佳答案
您的风格应该基于 MaterialDesignGridViewItem
资源:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem" BasedOn="{StaticResource MaterialDesignGridViewItem}">
<EventSetter Event="MouseDoubleClick" Handler="HitsoundLayer_MouseDoubleClick"/>
</Style>
</ListView.ItemContainerStyle>
关于c# - WPF ListViewItem 样式打破了数据绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55675636/