C# WPF带有复选框列的数据网格出现问题
这是我对Datagrid的标记C# WPF带有复选框列的数据网格出现问题,c#,wpf,C#,Wpf,这是我对Datagrid的标记 <DataGrid x:Name="DiseaseSymptomsDataGrid" FontWeight="Normal" SelectionMode="Extended" AlternationCount="2" GridLinesVisibility="All" HorizontalGridLinesBrush="#FF080101" VerticalGridLines
<DataGrid x:Name="DiseaseSymptomsDataGrid"
FontWeight="Normal" SelectionMode="Extended"
AlternationCount="2" GridLinesVisibility="All"
HorizontalGridLinesBrush="#FF080101"
VerticalGridLinesBrush="#FF0A0101"
BorderBrush="#FF245E97"
CanUserSortColumns="False"
CanUserAddRows="False"
AlternatingRowBackground="#FF515151"
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>
这个数据网格将加载大约100个条目,因为它的最大高度为250,所以数据网格内部将有一个滚动条
这就是问题所在,每当我选中一个复选框,并执行某个事件,即单击另一行而不选中复选框,单击按钮,任何事件并向下滚动,我选中的复选框现在处于未选中状态,复选标记现在显示在不同的行中,而不仅仅是一个复选框,现在有多个复选框
以下是截图:
我选中了一个复选框
然后,单击一行而不勾选其框
然后,事情发生了
复选框未绑定到任何内容,因此DataGrid不知道要设置什么值,而且由于DataGrid使用虚拟化,因此它只会呈现您可以看到的行数,这就是为什么它看起来会移动到另一个项目,而实际上它不移动,因此,一个解决方案是将IsChecked值绑定到模型中的一个属性,或者禁用虚拟化。如果您在答案中加入了这一点,我会选择它作为答案。谢谢