繁体   English   中英

如何获取 Syncfusion.WPF.DataGrid 中选定行的列表?

[英]How to get a list of selected rows in Syncfusion.WPF.DataGrid?

我在我的WPF项目中使用 Syncfusion。 以下是具有多种选择模式的DataGrid

<grid:SfDataGrid x:Name="dataGrid"
                 SelectionMode="Multiple"
                 Grid.Row="0"
                 SelectedItems="{Binding SelectedRows}"
                 BorderThickness="1"
                 NavigationMode="Row"
                 BorderBrush="Black"
                 CellStyle="{StaticResource ResourceKey=cellStyle}"
                 AutoGenerateColumns="False"
                 HeaderStyle="{StaticResource ResourceKey=headerStyle}"
                 ColumnSizer="AutoLastColumnFill"
                 ItemsSource="{Binding PagedSource, ElementName=dataPager}">
                        <grid:SfDataGrid.Columns>

                            <grid:GridCheckBoxSelectorColumn MappingName="SelectorColumn"
                                                             Width="30" />

                            <grid:GridTextColumn  AllowDragging="False"
                                                  HeaderText="Id"
                                                  MappingName="EquipmentId"
                                                  IsHidden="True" />
                            <grid:GridTextColumn  AllowDragging="False"
                                                  HeaderText="Code"
                                                  MappingName="EquipmentCode" />
                            <grid:GridTextColumn  AllowDragging="False"
                                                  HeaderText="Title"
                                                  MappingName="EquipmentTitle" />
                        </grid:SfDataGrid.Columns>

                    </grid:SfDataGrid>

我想在 ViewModel 中获取选定行的列表(它们的 Id 存在于第一个隐藏列中)。 我怎样才能做到这一点?

注意:我在我的项目中使用 Microsoft.Toolkit.MVVM。

我不知道它是否有帮助,但我知道如何通过在 xaml 端使用它来获取所选项目

<grid:SfDataGrid x:Name="dataGrid" SelectionChanged="GetSelected">

这是在 c# 侧

private void GetSelected(object sender, SelectionChangedEventArgs e)
        {
Object selectedItem = dataGrid.SelectedItem as Object;

        }

我在 XAML 代码中使用了SelectedItems="{Binding SelectedItems, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"然后,我在 ViewModel 中使用了以下属性:

  public class EquipmentIdentitySettingViewModel: ObservableObject {
  //...Some codes here
  private ObservableCollection < object > _selectedItems;

  public ObservableCollection < object > SelectedItems {
    get {
      return _selectedItems;
    }
    set {
      SetProperty(ref _selectedItems, value);
    }
  }
  public ICommand ApplyCommand {
    get;
  }
  public EquipmentIdentitySettingViewModel() {
    ApplyCommand = new RelayCommand(() => ApplyChanges());
  }
  private void ApplyChanges() {
    if (SelectedItems != null) {
      foreach(Equipment item in SelectedItems) {
        MessageBox.Show(item.EquipmentCode.ToString());
      }
    }
  }
}

问题解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM