2012-08-13 81 views
3

我用下面的方法来约束我的项目IsSelected的属性:WPF ListView Programmatically Select ItemWPF ListView控件编程取消项目

<ListView.ItemContainerStyle> 
    <Setter Property="IsSelected" Value="{Binding IsSelected}"/> 
</ListView.ItemContainerStyle> 

现在我能够通过简单的IsSelected属性设置为选择的背后我的代码项目真正。但是,我无法通过将我的项目的IsSelected属性设置为false来取消选择项目。

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

我将不胜感激任何帮助!

非常感谢你提前,

托马斯

+0

绑定ListView控件到数据源再次...或者你用多选择? – 2012-08-13 14:55:11

+0

没有人知道我在这里做错了吗? – 2012-08-27 12:39:44

+0

你是否在ui元素或绑定的数据上下文中更改IsSelected?如果它是你的DataContext,它是否实现INotifyPropertyChanged? IsSelected是否引发了这种变化? – dowhilefor 2012-08-27 12:51:45

回答

1

看起来你只是缺少TargetType的风格。根据Kent的原始代码添加目标类型ListViewItem

<ListView.ItemContainerStyle>   
    <Style TargetType="ListViewItem">    
     <Setter Property="IsSelected" Value="{Binding IsGroovy}"/>    
    </Style> 
</ListView.ItemContainerStyle> 
3

对于OP或其他寻求“以编程方式”取消选择ListView的人。 如果您的ListView七拼八凑单人房,扩展或多个可以永远只是:

YourlistView.Selecteditem = null;