C# WPF ListViewItem样式破坏了数据绑定?
我对C# WPF ListViewItem样式破坏了数据绑定?,c#,wpf,listview,gridview,listviewitem,C#,Wpf,Listview,Gridview,Listviewitem,我对WPF有点陌生,我有一个绑定listview使用gridview来显示对象及其属性的列表。我的整个项目都使用了MaterialDesign中的自定义样式,这给了一切一个黑暗的主题 我想在我的listview中的项目中添加doubleclick功能,我发现,我可以通过更改listview项目的样式来实现这一点。然而,这样就从我的MaterialDesign主题中重写了默认样式,项目就变得难看了 然后我添加了BasedOn=“{StaticResource{x:Type ListViewItem
WPF
有点陌生,我有一个绑定listview
使用gridview
来显示对象及其属性的列表。我的整个项目都使用了MaterialDesign
中的自定义样式,这给了一切一个黑暗的主题
我想在我的listview
中的项目中添加doubleclick
功能,我发现,我可以通过更改listview项目的样式来实现这一点。然而,这样就从我的MaterialDesign
主题中重写了默认样式,项目就变得难看了
然后我添加了BasedOn=“{StaticResource{x:Type ListViewItem}}”
以恢复默认样式,但是绑定停止工作,并且停止显示对象的属性
是否有更好的方法将setter添加到元素的样式中?
设置样式如何改变数据绑定
<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>
我所期望的是一个列表视图,它看起来如下所示,并且具有工作双击功能。
但我得到的是一个列表视图,它看起来如下所示,并且具有工作双击功能
如果没有BasedOn=“{StaticResource{x:Type ListViewItem}}”
您可以将鼠标双击处理程序添加到listview本身
<ListView MouseDoubleClick="ListView_MouseDoubleClick"
如果双击标题或分隔线,您可能必须对hsl进行null检查,以避免出现不好的情况。您的样式应基于MaterialDesignGridViewItem
资源:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem" BasedOn="{StaticResource MaterialDesignGridViewItem}">
<EventSetter Event="MouseDoubleClick" Handler="HitsoundLayer_MouseDoubleClick"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem" BasedOn="{StaticResource MaterialDesignGridViewItem}">
<EventSetter Event="MouseDoubleClick" Handler="HitsoundLayer_MouseDoubleClick"/>
</Style>
</ListView.ItemContainerStyle>