c# - WPF ListViewItem 样式打破了数据绑定(bind)?

标签 c# wpf listview gridview listviewitem

我是 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>

我期望的是一个如下所示的 ListView,并且可以双击。 enter image description here

但我得到的是一个如下所示的 ListView enter image description here并且可以正常双击。

这是没有 BasedOn="{StaticResource {x:Type ListViewItem}}" 的样子 enter image description here

最佳答案

您的风格应该基于 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/

相关文章:

c# - XAML 中列表的绑定(bind)列表?

listview - 在 JavaFx 8 中创建具有自定义背景颜色的 CheckBoxListCell

android - ListView 不显示数据

c# - 如何使用名称访问 SqlParameter 数组

c# - 全局变量与 ASP.NET session 状态

wpf - 屏蔽到 WPF 日期选择器

android - ListView 崩溃应用程序 :Java null Pointer Exception

c# - 找不到 System.ArgumentNullException : Value cannot be null 的修复

c# - 在某些 .NET Parallel.ForEach() 代码中执行一些异步/等待是否可以?

c# - WPF - 检测转换器中的设计模式