【发布时间】:2015-06-13 18:17:08
【问题描述】:
希望你能帮我解决这个问题:
我有一个包含 20 行的 DataGrid,每次我选中其中一列中的复选框时,标签值每次增加 100,如果未选中则减少。因此,一旦我检查了所有行,标签的值将是 2000。 就像你在下面看到的:
当我降低 DataGrid 的高度时,会出现一个 Vertical Scroll,当我选中复选框时,该过程似乎与您所看到的相似:
但是如果我向下滚动垂直条,其他复选框会出现启用或选中,知道为什么吗? 在这种情况下,我检查了前六个复选框,标签的值为 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();
}
}
【问题讨论】: