我希望你能帮助我:
我有一个包含20行的DataGrid,每次检查其中一列中的复选框时,标签值每次增加100,如果未选中则减少。因此,一旦我检查了所有行,标签的值将为2000。 就像你在下面看到的那样:
当我减小DataGrid的高度时,会出现一个垂直滚动,当我检查复选框时,程序似乎与您看到的类似:
但如果我向下滚动垂直条,其他复选框会启用或检查,不知道为什么? 在这种情况下,我检查了前六个复选框,标签的值是600,这很好,但为什么其他的复选框出现? 感谢..
以下是我用过的代码:
<StackPanel Name="spUno" Width="auto " LostKeyboardFocus="spUno_LostKeyboardFocus" >
<Button Name="btn_Accion" Margin="5" Width="100" Height="30" Content="Accion" Click="btn_Accion_Click">
</Button>
<Label Name="lbl_Muestra" Width="300" Margin="5"/>
<DataGrid Name="dg_Pruebas" AutoGenerateColumns="False" DataContext="{Binding}" Height="200" Width="300"
SelectionChanged="dg_Pruebas_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Binding="{Binding Path=id}"></DataGridTextColumn>
<DataGridTextColumn Header="Nombre" Binding="{Binding Path=nombre}" ></DataGridTextColumn>
<!--<DataGridCheckBoxColumn Header="check" Binding="{Binding Path=isChecked}" ></DataGridCheckBoxColumn>-->
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header >
<TextBlock>Ver
</TextBlock>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="ck_Prueba" Visibility="{Binding Path=visibility}" Checked="ck_Prueba_Checked" Unchecked="ck_Prueba_Checked" ></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
private void ck_Prueba_Checked(object sender, RoutedEventArgs e)
{
CheckBox check = e.OriginalSource as CheckBox;
Objeto obj = dg_Pruebas.SelectedItem as Objeto;
if (obj == null)
return;
if (check.IsChecked.Value)
{
lbl_Muestra.Content = (Convert.ToInt32(lbl_Muestra.Content)+Convert.ToInt32(obj.valor)).ToString();
} else
{
lbl_Muestra.Content = (Convert.ToInt32(lbl_Muestra.Content) - Convert.ToInt32(obj.valor)).ToString();
}
}
答案 0 :(得分:0)
可能只是回收速度
尝试
VirtualizingStackPanel.VirtualizationMode = “标准”