我有一个带多选的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指向哪个项目?
此外,如果所有这些绑定都是双向的,并且我从视图模型中更改了一个,那么其他绑定是否会更新? (我正在观察我的应用程序中的错误,也许是因为这个)
答案 0 :(得分:2)
前一段时间我有同样的问题,我检查过:我创建了一个包含多个项目的DataGrid
并设置了SelectedMode = Extended
,并且我绑定了两个:SelectedItem
和SelectedIndex
属性。
结果如下:当您选择单个项目,然后选择其他项目并进行多项选择时,SelectedItem
和SelectedIndex
属性将是第一项你选择了。因此,当您进行多重选择时,所选项目将是您选择的第一个项目。
所有其他所选项目都将在SelectedItems
集合中,这是只读的(如question you pointed所述),并且它不是依赖属性,因此您无法对其进行绑定它。因此,如果您想要获取所有选定项目,则需要处理DataGrid
的选择更改事件,然后手动添加和删除要保留的集合中的新旧项目(所选项目)。
希望我的回答足够清楚,它可以帮助你...