5

Windows 8 用のアプリ メトロを開発しています。GridApp (xaml) プロジェクトを使用していますが、セクションごとに異なるグループ スタイルを使用したいと考えています。

私のコードは次のとおりです。

public class GroupTemplateSelector : GroupStyleSelector
{

    public GroupStyle NewsItemGroupStyle { get; set; }
    public GroupStyle NormalGroupStyle { get; set; }

    protected override GroupStyle SelectGroupStyleCore(object group, uint level)
    {
        // a method that tries to grab an enum off the bound data object

        if (level == 3)
        {
            return NewsItemGroupStyle;
        }
        else
        {
            return NormalGroupStyle;
        }

        throw new ArgumentException("Unexpected group type"); 

    }
}

このクラスを使用して、グループ スタイルと XAML をセレクターにします

<!-- NewsItemGroupStyle -->
<GroupStyle x:Key="NewsItemGroupStyle">
    <GroupStyle.HeaderTemplate>
        <DataTemplate>
        </DataTemplate>
    </GroupStyle.HeaderTemplate>
    <GroupStyle.Panel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical" Margin="0,0,80,0" VerticalAlignment="Bottom"/>
        </ItemsPanelTemplate>
    </GroupStyle.Panel>
</GroupStyle>


<!-- NormalItemGroupStyle -->
<GroupStyle x:Key="NormalGroupStyle">
    <GroupStyle.HeaderTemplate>
        <DataTemplate>
            <Grid Margin="1,0,0,6">
                <Button
                    AutomationProperties.Name="Group Title"
                    Content="{Binding Title}"
                    Background="Blue"
                    Click="Header_Click"
                    Style="{StaticResource TextButtonStyle}"
                    />
            </Grid>
        </DataTemplate>
    </GroupStyle.HeaderTemplate>
    <GroupStyle.Panel>
        <ItemsPanelTemplate>
            <VariableSizedWrapGrid Orientation="Vertical" Margin="0,0,80,0"/>
        </ItemsPanelTemplate>
    </GroupStyle.Panel>
</GroupStyle>

<!-- selector -->
<common:GroupTemplateSelector 
    x:Key="groupSelector"
    NewsItemGroupStyle="{StaticResource NewsItemGroupStyle}"
    NormalGroupStyle="{StaticResource NormalGroupStyle}" />

しかし、スタイル グループは一斉に変更されます。

4

1 に答える 1

0

Lvsti が指摘したように、GroupStyleSelector は各レベルでしかスタイルを変更できません。たとえば、レベル 0 のグループはすべて同じスタイルですが、レベル 1 のグループはすべて異なるスタイルにすることができます。現在、レベル 0 で異なるスタイルを持つ 2 つの異なるグループを持つことはできません。実際、同じレベルのグループに対して最後に返されたスタイルが、そのレベルのすべてのグループに適用されるようです。残念ですが、それが今のデザインです。

開発サポート、設計サポート、その他の優れた機能が進行中: http://bit.ly/winappsupport

于 2013-02-27T20:59:20.947 に答える