1

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

<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 指向哪一项?

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

4

1 回答 1

2

前段时间我有同样的问题,我检查了:我DataGrid用几个项目创建了 a 并设置了SelectedMode = Extended,并且我绑定了:SelectedItemSelectedIndex属性。

结果是这样的:当您选择一个项目,然后选择其他项目并进行多选时,SelectedItemandSelectedIndex属性将是您选择的第一个项目。因此,当您进行多选时,所选项目将是您选择的第一个项目。

此外,所有其他选定的项目都将在SelectedItems集合中,即只读(就像您指出的问题中所说的那样)并且它不是依赖属性,因此您无法对其进行绑定。因此,如果要获取所有选定项目,则需要处理 的选择更改事件,DataGrid然后手动从要保留的集合(选定项目)中添加和删除新旧项目。

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

于 2012-11-23T18:01:33.667 回答