Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF ListViewItem样式破坏了数据绑定?_C#_Wpf_Listview_Gridview_Listviewitem - Fatal编程技术网

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>