在WPF中分组和非分组datagrid之间切换

时间:2013-11-13 05:34:57

标签: c# wpf datagrid toggle groupstyle

我目前已经填充了一定数量的行数据网格,并根据部门对行进行了分组。 所以,我在输出中看到的只是一个“基于部门的分组数据网格”。

是否可以在数据网格行的分组和非分组之间切换?

例如:如果用户不想基于组查看记录,他将单击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>

1 个答案:

答案 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的属性,例如,响应按钮切换。