![](/img/trans.png)
[英]How can I get a collection of selected rows in the DataGrid? MVVM WPF
[英]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.