【问题标题】:Bind to selected items in WPF DataGrid绑定到 WPF DataGrid 中的选定项目
【发布时间】:2023-03-16 17:45:01
【问题描述】:

我想知道谁是 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 类列表

【问题讨论】:

    标签: wpf mvvm datagrid selecteditem


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      旧建议:

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

      <DataGrid SelectionMode="Single"
      

      如果你希望选择模式是多重的,那​​么你不应该绑定到 SelectedIndex

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

      只保留 SelectedItem 绑定将 SelectionMode 设置为 Extended 并重试

      【讨论】:

      • 但我希望可以选择多个项目
      • 错误 339 'SelectedItems' 属性是只读的,不能从标记中设置
      • 不是“SelectedItems”,而是“SelectedItem”。 'SelectedItems' 是我最初的错误更新。然后在您的后端代码中使用所选项目来读取用户选择。
      • 但是当我选择多个项目时,即使我按下一个,所选项目也不会改变
      • 我发布了我的最终建议。祝你好运!
      猜你喜欢
      • 1970-01-01
      • 2017-09-18
      • 2018-04-06
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 2012-12-16
      • 2011-02-06
      • 1970-01-01
      相关资源
      最近更新 更多