[英]WPF Datagrid get all checked rows (without using WPF binding)
How can I get all of the checked rows in WPF datagrid using C# code behind? 如何使用后面的C#代码在WPF数据网格中获取所有检查的行?
I'm trying a batch deletion with these codes but I need to get all checked rows first. 我正在尝试使用这些代码进行批量删除,但我需要先获取所有选中的行。
Here is my datagrid 这是我的数据网格
<DataGrid x:Name="DiseaseSymptomsDataGrid" Grid.Row="1"
SelectionMode="Extended"
GridLinesVisibility="All"
CanUserSortColumns="False"
CanUserAddRows="False"
HeadersVisibility="Column"
AutoGenerateColumns="False"
PreviewMouseLeftButtonUp="DiseaseSymptomsDataGrid_OnPreviewMouseLeftButtonUp"
>
<DataGrid.Columns>
<DataGridTextColumn x:Name="IdColumn" Binding="{Binding Id}" Header="Id" Visibility="Collapsed" IsReadOnly="True"/>
<DataGridTextColumn x:Name="DiseaseIdColumn" Binding="{Binding DiseaseId}" Header="DiseaseId" Visibility="Collapsed" IsReadOnly="True"/>
<DataGridTextColumn x:Name="DiseaseNameColumn" Binding="{Binding DiseaseName}" Header="Disease" Visibility="Collapsed" IsReadOnly="True"/>
<DataGridTextColumn x:Name="SymptomIdColumn" Binding="{Binding SymptomId}" Header="SymptomId" Visibility="Collapsed" IsReadOnly="True"/>
<DataGridTextColumn x:Name="SymptomNameColumn" Binding="{Binding SymptomName}" Header="Symptom" IsReadOnly="True"/>
<DataGridTextColumn x:Name="DescriptionColumn" Binding="{Binding SymptomDescription}" Header="Description" Width="425" IsReadOnly="True"/>
<DataGridCheckBoxColumn x:Name="StatusIdColumn" Header="Delete" IsReadOnly="False"/>
</DataGrid.Columns>
</DataGrid>
Here is my attempted code behind 这是我尝试的代码背后
public List<DiseaseSymptomParams> GetSelectedDiseaseSymptom()
{
var entiParams = new DiseaseSymptomParams();
var selectedDiseases = new List<DiseaseSymptomParams>();
try
{
// this will only get the highlighted row, not ALL the checked rows
foreach (DiseaseSymptom itemSelected in DiseaseSymptomsDataGrid.SelectedItems)
{
entiParams.Id = DefaultValue.GetInt(itemSelected.Id);
selectedDiseases.Add(entiParams);
}
}
catch (Exception)
{
}
return selectedDiseases;
}
Here is what you could do: 您可以执行以下操作:
foreach (DiseaseSymptom item in DiseaseSymptomsDataGrid.ItemsSource)
{
if (((CheckBox)StatusIdColumn.GetCellContent(item)).IsChecked == true)
{
selectedDiseases.Add(item);
}
}
Not MVVM-compliant but pragmatic. 不符合MVVM,但务实。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.