Windows 8.1商店应用中网格视图中的多项模板

时间:2015-03-11 04:51:33

标签: c# xaml windows-store-apps winrt-xaml windows-8.1

在gridview项目模板中,是否可以拥有多个模板?在我的屏幕中,我在GridView控件的一个部分中有一组图标。我想让其中一个图标具有更大的尺寸。我怎么能实现它。

<GridView>
<GridView.ItemTemplate>
<DataTemplate>
<Grid/>
<DataTemplate/>
<GridView.ItemTemplate/>
<GridView/>

在此模板中,网格的尺寸igive将对所有元素保持相同。我如何自定义它以使项目的onne具有不同维度的网格。

1 个答案:

答案 0 :(得分:2)

是的,你可以。你需要一个DataTemplateSelector。您可以在网格/列表中为所选对象选择适当的模板。

选择器示例:

class TemplateSelectorMyPage : DataTemplateSelector
    {
        public DataTemplate NormalIconTemplate { get; set; }
        public DataTemplate BigIconTemplate { get; set; }

        protected override DataTemplate SelectTemplateCore( object item, DependencyObject container )
        {
            var uiElement = container as UIElement;
            if( uiElement == null )
            {
                return base.SelectTemplateCore( item, container );
            }

            if ( item is BigIconItem )
            {
                return BigIconTemplate;
            }
            else if ( item is NormalIconItem )
            {
                return NormalIconTemplate;
            }
            return base.SelectTemplateCore( item, container );
        }

在XAML中:

<Page.Resources>
    <local:TemplateSelectorMyPage  x:Key="mySelector"
        BigIconTemplate="{StaticResource myBigIconTemplate}"
        NormalIconTemplate="{StaticResource myNormalIconTemplate}">
    </local:TemplateSelectorBusinessPage>
</Page.Resources>

在网格XAML中:

<GridView           
            x:Name="itemGridView"
            ItemTemplateSelector="{StaticResource mySelector}"