我目前已经填充了一定数量的行数据网格,并根据部门对行进行了分组。 所以,我在输出中看到的只是一个“基于部门的分组数据网格”。
是否可以在数据网格行的分组和非分组之间切换?
例如:如果用户不想基于组查看记录,他将单击radiobutton,datagrid将填充行而不进行分组,反之亦然。
提前致谢。
以下是DataGrid.GroupStyle中的示例代码:
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Name}"/>
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander Margin="15 0 0 0" IsExpanded="True">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Foreground="white" Text="{Binding Path=emp}" FontWeight="Bold" Margin="5 0 0 0"/>
<TextBlock Foreground="white" Text="{Binding Path=empCount}" Margin="10 0 3 0"/>
<TextBlock Foreground="white" Text="emps"/>
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
答案 0 :(得分:0)
很抱歉,如果它很旧,但我还是会回答。
您需要执行的编辑不在GroupStyle中,而是在ViewModel的代码中。您可能将listview ItemSource绑定到ObservableCollection <>。在内部,将对您的集合进行查看,并且该collectionView实际上是绑定到ListView的视图。您可以通过以下方式明确获取该视图:
public ObservableCollection<T> HeldCollection{ get; set; }
#region properties for the view
CollectionView _HeldView;
public CollectionView HeldView
{
get
{
if (_HeldView == null)
{
_HeldView = (CollectionView)CollectionViewSource.GetDefaultView(HeldCollection);
//_HeldView.GroupDescriptions.Add(GroupDescription);
}
return _HeldView;
}
}
您可以编辑GroupDescription,因为它是CollectionView的属性,例如,响应按钮切换。