如何在XAML中更改来自DataTemplate的第一个孩子的风格?

时间:2013-08-02 12:32:40

标签: c# xaml windows-store-apps

所以我在Page.Resources中定义了一个DataTemplate,它在GridView中用于显示我的数据。

它与VS 2012附带的GroupedItemsPage模板基本相同。

        <DataTemplate x:Key="menuGroupTemplate">
        <Grid x:Name="itemSquare" HorizontalAlignment="Left" Width="250" Height="250" Tapped="itemSquare_Tapped">
            <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}">
                <Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/>
            </Border>
            <StackPanel VerticalAlignment="Bottom" Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}">
                <TextBlock Text="{Binding DisplayName}" Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextStyle}" Height="60" Margin="15,0,15,0"/>
                <TextBlock Text="{Binding Subtitle}" Foreground="{StaticResource ListViewItemOverlaySecondaryForegroundThemeBrush}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap" Margin="15,0,15,10"/>
            </StackPanel>
        </Grid>
    </DataTemplate>

现在这使我的小组看起来像这样:

Linear ordered items

所有项目看起来都一样,方块大小相同!

现在我想创建一个DataTemplate,它使组中的第一个项目比其他项目大得多,以便它看起来像这样:(来自IdeaPress Wordpress应用程序)

Different ordered items

所以现在我想改变组中第一个元素的样式/外观/大小,但我找不到一种方法来检索第一个元素并改变它的大小。

Ideapress应用程序的问题在于它完全是用HTML / JS编写的,而我使用的是C#并且它们没有使用任何DataTemplate或类似的东西来显示它们的数据,所以只是从它们复制它不起作用出来给我。至少两者都是Windows应用商店。

我考虑过在构造函数中执行它,这与其他一些场景一样失败。 但是当我感觉到这种感觉时,必须有一种不同的,更优雅的方式来实现这一目标。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要两个不同的模板才能执行此操作。 这个link很有用,它提供了一个以优雅的方式做你需要的样本。