WPF DataGrid 中的 IsSelected 绑定
Posted
技术标签:
【中文标题】WPF DataGrid 中的 IsSelected 绑定【英文标题】:IsSelected Binding in WPF DataGrid 【发布时间】:2013-02-01 20:07:58 【问题描述】:我的模型(X 类)布尔属性:IsSelected
,链接到 WPF DataGrid
,如下所示:
<DataGrid SelectedIndex="Binding SelectedXIndex,Mode=TwoWay"
DataContext="Binding MyViewModel"
ItemsSource="Binding ListX" AutoGenerateColumns="False">
<DataGrid.RowStyle>
<Style TargetType="x:Type DataGridRow">
<Setter Property="IsSelected"
Value="Binding IsSelected, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
ListX
- ObservableCollection
IsSelecte
- 调用 NotifyPropertyChange
效果很好。
但是当我有很多行时,我需要滚动查看它们,然后按下运行以下功能的“全选”按钮,他只选择了一些行而不是全部:(即使尽管列表中的所有 IsSelected 都是 true)
public void SelectAll()
ListX.All(c => c.IsSelected = true);
我不明白为什么会这样?
【问题讨论】:
您是否在“相关”部分看到this question? @LPL 它没有帮助我,那里的答案不成功。我说的是从 viewModel 到 XMAL 的返回数据,而这个问题恰恰相反 【参考方案1】:这就是最终帮助我的原因:
我把DataGrid放进去:
VirtualizingStackPanel.VirtualizationMode="Standard"
【讨论】:
如果您需要使用回收模式(我愿意),另一个选项是附加的行为/代码隐藏,它监视网格的 OnSelectedCellsChanged 事件并通过更新(取消)选定的虚拟机来做出反应(需要如果需要双向绑定,也可以执行相反的操作)。以上是关于WPF DataGrid 中的 IsSelected 绑定的主要内容,如果未能解决你的问题,请参考以下文章
WPF DataGrid MultiBinding到DataGrid ItemSsource中的类