IsSelected在WPF的DataGrid
问题描述:
我在我的模型(X类)布尔属性的绑定:IsSelected
,链接到WPF DataGrid
如下: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
它很好用。
但是,当我有很多行,我需要滚动来查看它们,并且我按下了“Select All”按钮来运行以下功能,他只选择了一些行而不是全部:(即使所有名单上的IsSelected是真)
public void SelectAll()
{
ListX.All(c => c.IsSelected = true);
}
我不明白为什么会这样?
答
这就是最后帮我:
我把在DataGrid:
VirtualizingStackPanel.VirtualizationMode="Standard"
+1
如果你需要使用回收模式(我这样做),另一个选项是一个附加的行为/代码隐藏,监视网格的OnSelectedCellsChanged事件,并通过更新(de)选定的虚拟机(如果需要双向绑定,也需要做相反的处理)。 – dlf 2015-12-03 15:30:29
你见过[这个问题](http://stackoverflow.com/q/2068130/620360)从相关章节? – LPL 2013-02-17 09:39:37
@LPL它没有帮助我,答案没有成功。我说的是从viewModel到XMAL的返回数据,这个问题是相反的 – 2013-02-17 10:41:25