WPF ListView 以编程方式取消选择项目

Tho*_*ber 6 c# data-binding listview selection

我使用以下方法将我的项目的 IsSelected 绑定到一个属性:WPF ListView Programmatically Select Item

<ListView.ItemContainerStyle>
    <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)

现在我可以通过简单地将 IsSelected 属性设置为 true 来选择我在代码后面的项目。但是,我无法通过将项目的 IsSelected 属性设置为 false 来取消选择项目。

将 items 属性 IsSelected 设置为 true 将触发 ListViewSelectionChanged 事件。但是,将已选择项的属性 IsSelected 设置为 false 不会触发该事件。该属性将更改为 false,但该项目在 ListView 中保持选中状态。我也尝试过使用 Mode=TwoWay 没有任何成功。

我将不胜感激任何形式的帮助!

非常感谢您提前,

托马斯

小智 8

对于希望“以编程方式”取消选择 ListView 的 OP 或其他人。如果您的 ListView 被设置为 Single、Extended 或 Multiple,您总是可以:

YourlistView.Selecteditem = null;
Run Code Online (Sandbox Code Playgroud)


Int*_*Hen 5

或者你也可以使用这个:

YourlistView.UnselectAll();
Run Code Online (Sandbox Code Playgroud)


EnL*_*cha 4

看来您只是缺少TargetType风格。ListViewItem按照下面 Kent 的原始代码 添加目标类型。

<ListView.ItemContainerStyle>         
    <Style TargetType="ListViewItem">             
        <Setter Property="IsSelected" Value="{Binding IsGroovy}"/>               
    </Style>   
</ListView.ItemContainerStyle> 
Run Code Online (Sandbox Code Playgroud)