2

我想知道谁是 DataGrid 中的选定项(将它们插入到 ViewModel 中的集合中)。

当我绑定到所选项目时,仅当我单击行(1 行)时才会更改,但是当我按 ctrl + 单击时它仍然是第一个项目,为什么会发生这种情况,是否可以链接所有所选项目?

这是我的数据网格:

<DataGrid SelectedIndex="{Binding SelectedXIndex}" DataContext="{Binding XViewModel}" SelectedItem="{Binding CurrentX}" ItemsSource="{Binding ListX, Mode=TwoWay}" AutoGenerateColumns="False" >
    <DataGrid.Columns>
     ...
    </DataGrid.Columns>
</DataGrid>

在 XViewModel 我有:

SelectedXIndex(int) 用于选定的索引

CurrentX(类 x 的对象)用于当前选择

ListX- x 类列表

4

3 回答 3

1

你看过“SelectedItems”(不是SelectedItem)集合吗?

于 2013-02-12T12:08:03.637 回答
0

我已经发布了一种技术,该技术仅通过扩展 DataGrid 就允许只读绑定到 WPF DataGrid 的 SelectedItems 属性。你可以在https://stackoverflow.com/a/16953833/62278看到我的回答

于 2013-06-06T04:51:42.863 回答
-1

我提出的第一个建议没有奏效。我离开他们只是出于历史原因。

我最终认为问题在于您想要做的事情有点奇怪 - 或者容易出错。当您希望能够选择多个时,您将绑定到 SelectedItem(一项)。

我个人不会在 xaml 中放置任何绑定(当然除了 ItemsSource),并使用后端代码中的 selectionChanged 事件跟踪选择更改。在此处找到支持此方法的具有类似问题的链接

希望你能找到更好的解决方案

旧建议:

这应该可以解决问题,因为您似乎将其视为单一模式选择 Datagrid,但您并没有明确地将其定义为:

<DataGrid SelectionMode="Single"

如果您希望选择模式为多种,则不应绑定到 SelectedIndex

我还想知道为什么您同时具有 SelectedIndex 绑定和 SelectedItem 绑定。在任何情况下,都应该只需要一个。

只保留 SelectedItem 绑定将 SelectionMode 设置为 Extended,然后重试

于 2013-02-12T11:43:24.907 回答