DataGrid.SelectedIndex如何表现

时间:2012-11-21 14:46:34

标签: wpf datagrid

我有一个带多选的WPF数据网格(SelectedMode = Extended)。每个项目都有https://stackoverflow.com/a/2615487/284795

的IsSelected绑定
<DataGrid 
ItemsSource="{Binding Items}"
SelectionUnit="FullRow"
SelectionMode="Extended"
SelectedIndex="{Binding SelectedIndex}"
SelectedItem="{Binding SelectedItem}">
    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow">
            <Setter Property="IsSelected" Value="{Binding IsSelected}" />
        </Style>
    </DataGrid.RowStyle>
</DataGrid>

我很好奇。 DataGrid上的SelectedIndex和SelectedItem属性现在如何表现?如果在数据网格中选择了两个项目,那么SelectedItem指向哪个项目?

此外,如果所有这些绑定都是双向的,并且我从视图模型中更改了一个,那么其他绑定是否会更新? (我正在观察我的应用程序中的错误,也许是因为这个)

1 个答案:

答案 0 :(得分:2)

前一段时间我有同样的问题,我检查过:我创建了一个包含多个项目的DataGrid并设置了SelectedMode = Extended,并且我绑定了两个:SelectedItemSelectedIndex属性。

结果如下:当您选择单个项目,然后选择其他项目并进行多项选择时,SelectedItemSelectedIndex属性将是第一项你选择了。因此,当您进行多重选择时,所选项目将是您选择的第一个项目。

所有其他所选项目都将在SelectedItems集合中,这是只读的(如question you pointed所述),并且它不是依赖属性,因此您无法对其进行绑定它。因此,如果您想要获取所有选定项目,则需要处理DataGrid的选择更改事件,然后手动添加和删除要保留的集合中的新旧项目(所选项目)。

希望我的回答足够清楚,它可以帮助你...