5

我正在为 Windows 8 开发应用程序 Metro。我使用 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 级有两个不同风格的不同组。事实上,似乎为同一级别的任何组返回的最后一个样式应用于该级别的所有组。这是不幸的,但这是目前的设计。

开发支持、设计支持和更多的好处:http: //bit.ly/winappsupport

于 2013-02-27T20:59:20.947 回答