Metro app如何在C#代码后面创建分组GridView

时间:2012-08-21 12:37:47

标签: c# windows-8 microsoft-metro windows-runtime

在我的metro应用程序中,我需要在GridView上显示VariableSizeWrapGrid组。在XAML中直接执行此操作(通过创建ItemsPanelTemplate和GroupStyle)。但是有没有办法在后面的C#代码中做同样的事情。

1 个答案:

答案 0 :(得分:1)

来自here

using System;
using System.Windows;
using System.Windows.Data;

namespace GroupingSample
{
    public partial class Window1 : System.Windows.Window
    {

        public Window1()
        {
            InitializeComponent();
        }

        CollectionView myView;
        private void AddGrouping(object sender, RoutedEventArgs e)
        {
            myView = (CollectionView)CollectionViewSource.GetDefaultView(myItemsControl.ItemsSource);
            if (myView.CanGroup == true)
            {
                PropertyGroupDescription groupDescription
                    = new PropertyGroupDescription("@Type");
                myView.GroupDescriptions.Add(groupDescription);
            }
            else 
                return;
        }

        private void RemoveGrouping(object sender, RoutedEventArgs e)
        {
            myView = (CollectionView)CollectionViewSource.GetDefaultView(myItemsControl.ItemsSource);
            myView.GroupDescriptions.Clear();
        }
    }
}

这里的关键是你从ItemsSource获得默认视图并在其上设置分组。这一行:

myView = (CollectionView)CollectionViewSource.GetDefaultView(myItemsControl.ItemsSource);