我是Silverlight的新手。 我有一个datagrid,其中第一列包含一个复选框,让用户选择特定的行。我在datagrid列标题中添加了一个复选框来检查或取消选中所有行。 这就是我添加的方式
<sdk:DataGridCheckBoxColumn Binding="{Binding IsSelected, Mode=TwoWay}" >
<sdk:DataGridCheckBoxColumn.HeaderStyle>
<Style TargetType="sdk:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<CheckBox cal:Message.Attach="[Event Checked]=[Action SelectAllInPage()]; [Event Unchecked]=[Action UnSelectAllInPage()]" Margin="2,0,-13,0" IsChecked="{Binding Path=DataContext.AllChecked, ElementName=LayoutRoot, Mode=TwoWay}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</sdk:DataGridCheckBoxColumn.HeaderStyle>
</sdk:DataGridCheckBoxColumn>
<sdk:DataGridTemplateColumn Header="Household" Width="100" >
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox HorizontalAlignment="Left" x:Name="IsSelected" IsChecked="{Binding IsSelected, Mode=TwoWay}" Margin="5,5,0,0" />
<TextBlock Text="{Binding HouseholdId}" TextWrapping="NoWrap" VerticalAlignment="Center" Margin="0,5,0,0" FontSize="11" />
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
功能正常,并且按照预期,但它在第一列中显示两个复选框。 当我删除IsSelected复选框时,只显示一个复选框,但不允许选择特定行。 可能是这个问题的原因是什么,我应该怎么做,我假设绑定IsSelected导致此问题 我从DataGridCheckBoxColumn中删除了绑定,在这种情况下它没有显示任何记录
答案 0 :(得分:0)
在您在问题中显示的xaml中,您声明了两列:一个DataGridCheckBoxColumn
和一个DataGridTemplateColumn
,其CheckBox
和TextBlock
组合在一起CellTemplate
}。因此,每行将看到两个CheckBox,第一个属于DataGridCheckBoxColumn,第二个属于DataGridTemplateColumn。
删除CheckBoxColumn或从TemplateColumn的CellTemplate中删除CheckBox。