C# WPF数据网格中SelectionChanged和SelectedCellsChanged之间发生了什么

C# WPF数据网格中SelectionChanged和SelectedCellsChanged之间发生了什么,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个数据网格,其中有一些行,当用户选择一行时,我想选择相应的行。在SelectionChanged事件中执行此操作时,将正确设置行get selected dataGrid.SelectedItems,但这不会显示在GUI中,仅选择了行标题,而不是行 如果在SelectedCellsChanged事件中选择其他行,则一切都会按预期进行。有人知道在这两者之间发生了什么吗?或者更好:正确的方法应该是什么 下面是一些代码,可以使用.Net 4.5.1复制: <DataGrid Sel

我有一个数据网格,其中有一些行,当用户选择一行时,我想选择相应的行。在SelectionChanged事件中执行此操作时,将正确设置行get selected dataGrid.SelectedItems,但这不会显示在GUI中,仅选择了行标题,而不是行

如果在SelectedCellsChanged事件中选择其他行,则一切都会按预期进行。有人知道在这两者之间发生了什么吗?或者更好:正确的方法应该是什么

下面是一些代码,可以使用.Net 4.5.1复制:

    <DataGrid SelectionChanged="DataGrid_SelectionChanged" Name="myDatagrid"
              ItemsSource="{Binding}" SelectedCellsChanged="myDatagrid_SelectedCellsChanged"/>

    private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        // Does not display correctly
        // myDatagrid.SelectedItems.Add(somerow)
    }

    private void myDatagrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
    {
        // Does display correctly
        // myDatagrid.SelectedItems.Add(somerow)
    }

这将导致StackOverflowException。不要在与选择更改相关的事件中更改选择。不要担心:当然,我使用一个标志来防止循环,从而防止StackOverflowException。