Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF带有复选框列的数据网格出现问题_C#_Wpf - Fatal编程技术网

C# WPF带有复选框列的数据网格出现问题

C# WPF带有复选框列的数据网格出现问题,c#,wpf,C#,Wpf,这是我对Datagrid的标记 <DataGrid x:Name="DiseaseSymptomsDataGrid" FontWeight="Normal" SelectionMode="Extended" AlternationCount="2" GridLinesVisibility="All" HorizontalGridLinesBrush="#FF080101" VerticalGridLines

这是我对Datagrid的标记

<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值绑定到模型中的一个属性,或者禁用虚拟化。如果您在答案中加入了这一点,我会选择它作为答案。谢谢