IsSelected在WPF的DataGrid

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); 
} 

我不明白为什么会这样?

+0

你见过[这个问题](http://stackoverflow.com/q/2068130/620360)从相关章节? – LPL 2013-02-17 09:39:37

+0

@LPL它没有帮助我,答案没有成功。我说的是从viewModel到XMAL的返回数据,这个问题是相反的 – 2013-02-17 10:41:25

这就是最后帮我:

我把在DataGrid:

VirtualizingStackPanel.VirtualizationMode="Standard" 
+1

如果你需要使用回收模式(我这样做),另一个选项是一个附加的行为/代码隐藏,监视网格的OnSelectedCellsChanged事件,并通过更新(de)选定的虚拟机(如果需要双向绑定,也需要做相反的处理)。 – dlf 2015-12-03 15:30:29