我在向数据网格添加分组时遇到问题;我定义为“Checkbox.Checked”的事件在不应该被调用时被调用。
当这行代码未被注释掉“collection.GroupDescriptions.Add(new PropertyGroupDescription("_group"));
”时,就会发生错误。
在使用此行启动我的应用程序时,任何复选框的第一次检查都会按预期工作,然后在第二次单击时,如果我在数据网格上的任何位置单击,则会触发已检查的事件。
你们有什么想法吗?
感谢。
我在我的DataGrid上定义了这样的事件;
<DataGridCheckBoxColumn.CellStyle>
<Style>
<EventSetter Event="CheckBox.Checked" Handler="Method_checked"/>
<EventSetter Event="CheckBox.Unchecked" Handler="Method_Unchecked"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
我已经使用C#中的以下代码添加了对数据的分组;
ListCollectionView collection = new ListCollectionView(listOfData);
collection.GroupDescriptions.Add(new PropertyGroupDescription("_group"));
dgData.ItemsSource = collection;
我已将组添加到我的数据网格中,在xaml中添加以下代码;
<DataGrid.GroupStyle>
<GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}">
<GroupStyle.Panel>
<ItemsPanelTemplate>
<DataGridRowsPresenter/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
您可能会注意到上面定义的“GroupHeaderStyle”;
<Window.Resources>
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander x:Name="exp" IsExpanded="True"
Background="White"
Foreground="Black">
<Expander.Header>
<TextBlock Text="{Binding Name}" />
</Expander.Header>
<ItemsPresenter/>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>