【问题标题】:Get multi-selection in Datagrid在 Datagrid 中获取多选
【发布时间】:2018-02-08 14:51:03
【问题描述】:

我正在尝试在数据网格中选择所有行。所有行都是ObservableCollection<T> 的一个项目,我想知道哪些元素被选中,或者没有被选中(可能是一个,很多或没有)。另外,我不想使用复选框,想(如果可能的话)像 ctrl + leftMouseClick 这样的想法选择多行。

这是 xaml 代码:

                <DataGrid ItemsSource="{Binding ListBinded}" AutoGenerateColumns="False" Name="ListName"
                Style="{StaticResource AzureDataGrid}" Grid.Row="1" FrozenColumnCount="2"
                ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Auto">
                    <DataGrid.Resources>
                        <Style x:Key="AlignBottomColumnHeader" BasedOn="{StaticResource AzureDataGridColumnHeader}" TargetType="DataGridColumnHeader">
                            <Setter Property="VerticalContentAlignment" Value="Bottom" />
                        </Style>
                    </DataGrid.Resources>
                    <DataGrid.Columns>
                        <!--Description-->
                        <DataGridTemplateColumn Header="Description" HeaderStyle="{StaticResource AlignBottomColumnHeader}" Width="*" MinWidth="200">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Border BorderThickness="2">
                                        <TextBlock Text="{Binding InfoColumn}"/>
                                    </Border>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                    </DataGrid.Columns>
                </DataGrid>

很想把 C# 代码放在下面,但暂时没有代码。

编辑:对我来说,这不是重复的,因为我在下面的代码中没有 DataGrid,而是一个 ObservableCollection,它没有 SelectedItem 参数(我试图在 ViewModelBase 类中获取信息,之后触发了 ICommand)

【问题讨论】:

标签: c# wpf datagrid


【解决方案1】:

如果您使用 MVVM 模式,您可以将 VM 的 SelectedRecord 属性与 DataGridSelectedItem 绑定。通过这种方法,您的 VM 中始终有 SelectedValue

如果您不使用 MVVM,您可以获取 DataGridSelectedIndex 属性,然后将其转换为您拥有的类型。然后你可以遍历它以获取所有选定的项目。

【讨论】:

  • 我得到的问题是我在下面的代码中没有数据网格,而是 ObservableCollection
  • 你显示的代码是什么意思,有一个数据网格(否则你希望如何显示你的数据),你可以通过 x:Name = "MyDataGrid" 给它一个名字,然后做我在那里告诉过你。
  • 我已经这样做了,我无法在我的 ViewModelBase 类中访问 MyDataGrid
猜你喜欢
  • 2016-08-11
  • 2020-02-20
  • 2011-04-24
  • 1970-01-01
  • 2017-11-22
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多