Creé una GridView agrupada con una plantilla de elemento y una plantilla de encabezado. Funciona bien, pero me gustaría que el primer artículo de mi lista tenga una plantilla diferente (para ser más grande). Como la aplicación francesa "LeMonde", por ejemplo. No tengo idea de cómo podría definir la plantilla para lograr eso.Tamaño de elemento diferente en una cuadrícula agrupadaVer
Aquí está mi actual código XAML
<Page.Resources>
<CollectionViewSource x:Name="cvs1" IsSourceGrouped="True" />
</Page.Resources>
<Grid Background="White">
<GridView x:Name="PicturesGridView" SelectionMode="None"
ItemsSource="{Binding Source={StaticResource cvs1}}"IsItemClickEnabled="True" ItemClick="ItemView_ItemClick">
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="RectanglesStackPanel" Margin="8" Orientation="Vertical" Width="242">
<Image Source="{Binding imageUrl}" Height="180" Width="225" Stretch="UniformToFill" />
<Border Background="Gray" Opacity="1" Width="225" Height="115">
<TextBlock Text="{Binding title}"
Foreground="White" TextWrapping="Wrap" Width="215" FontSize="18" />
</Border>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Button Click="Button_Click_1" Content="{Binding Key}" Foreground="Black" Background="White" FontSize="30" Margin="0,0,0,-10" ></Button>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid Orientation="Vertical" />
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
</GridView>
</Grid>
acabo ato mi lista de elemento en C# como esto:
this.cvs1.Source = ListOfArticle;
gracias de antemano :)
Gracias tu Iván. Me ayuda mucho. Sin embargo, el código proporcionado en el ejemplo no parece estar actualizado para Windows 8. ¿Tiene alguna idea de cómo podemos acceder a una plantilla definida en los recursos de una página? El método FindRessources ya no existe. Probé con este código en su lugar, pero no fue exitosa:
public class AuctionItemDataTemplateSelector : DataTemplateSelector
{
protected override DataTemplate SelectTemplateCore(object item,
DependencyObject container)
{
FrameworkElement element = container as FrameworkElement;
if (element != null && item != null && item is Article)
{
Article auctionItem = item as Article;
DataTemplate mySmallTemplate = element.FindName("SmallTemplate") as DataTemplate;
switch (auctionItem.isFirstItem)
{
case true:
return
element.FindName("BigTemplate") as DataTemplate;
case false:
return
element.FindName("SmallTemplate") as DataTemplate;
}
}
return null;
}
}
'
No debe poner cosas como "windows 8" en su título. Para eso son las etiquetas. – mydogisbox
Sí: http://blog.jerrynixon.com/2012/08/windows-8-beauty-tip-using.html –