【发布时间】:2012-08-13 14:44:37
【问题描述】:
我使用以下方法将我的项目的 IsSelected 绑定到属性:WPF ListView Programmatically Select Item
<ListView.ItemContainerStyle>
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</ListView.ItemContainerStyle>
现在我可以通过简单地将 IsSelected 属性设置为 true 来在代码中选择我的项目。但是,我无法通过将项目的 IsSelected 属性设置为 false 来取消选择项目。
将项目属性 IsSelected 设置为 true 将触发 ListViewSelectionChanged 事件。但是,将已选择项目的 IsSelected 属性设置为 false 不会触发事件。该属性将更改为 false,但该项目在 ListView 中仍处于选中状态。我也尝试过使用 Mode=TwoWay 没有任何成功。
我将不胜感激任何形式的帮助!
非常感谢您,
托马斯
【问题讨论】:
-
再次将ListView绑定到数据源...或者你使用多选?
-
没人知道我在这里做错了什么吗?
-
您是在 ui 元素上还是在绑定的数据上下文上更改 IsSelected?如果是您的 DataContext,它是否实现了 INotifyPropertyChanged? IsSelected 是否引发了变化?
-
输出窗口中还有绑定异常吗?如果没有,请尝试通过设置 Value="{Binding Path=IsSelected, diagnostics:PresentationTraceSources.TraceLevel=High}" 使用有关绑定的扩展信息
-
嗨。是的,我正在更改绑定数据上下文的值。并引发了 INotifyPropertyChanged。 (IsSelected = true) 成功选择一个元素。使用 TraceLevel=High 我能够确认绑定似乎有效。代码中的 IsSelect = true 会导致 TransferValue - 使用最终值“True”,代码中的 IsSelect = false 会导致 TransferValue - 使用最终值“False”。但是在视图中,该项目仍处于选中状态。
标签: c# listview data-binding selection