Metro中GridView怎么根据每一个Item设置不同的Template

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Metro中GridView怎么根据每一个Item设置不同的Template相关的知识,希望对你有一定的参考价值。

参考技术A 拿自己的程序 做例子,举一反三:
在namespace中声明类:
public class WordItem

public string Image get; set;
public string Title get; set;
public string Chinese get; set;
public string Type get; set;
public bool Show get; set;

public class ItemTemplate : DataTemplateSelector

public DataTemplate ShowChineseTemplate_Big get; set;
public DataTemplate HideChineseTemplate_Big get; set;
public DataTemplate ShowChineseTemplate_Small get; set;
public DataTemplate HideChineseTemplate_Small get; set;
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)

WordItem Words = item as WordItem;
if (Words.Show)
return ShowChineseTemplate_Big;
else
return HideChineseTemplate_Big;



在Xaml中声明模版:
<UserControl.Resources>
<DataTemplate x:Key="Standard72x72ItemTemplate">
<Grid HorizontalAlignment="Left" Width="72" Height="72">
<Border Background="StaticResource ListViewItemPlaceholderBackgroundThemeBrush">
<Image Source="Binding Image" Stretch="UniformToFill" AutomationProperties.Name="Binding Title"/>
</Border>
<StackPanel VerticalAlignment="Bottom" Background="StaticResource ListViewItemOverlayBackgroundThemeBrush">
<TextBlock Text="Binding Title" Foreground="StaticResource ListViewItemOverlayForegroundThemeBrush" Height="20" Margin="5,0,5,0" FontSize="11" FontWeight="Medium"/>
</StackPanel>
</Grid>
</DataTemplate>
<DataTemplate x:Key="Standard50x50ItemTemplate">
<Grid HorizontalAlignment="Left" Width="50" Height="50">
<Border Background="StaticResource ListViewItemPlaceholderBackgroundThemeBrush">
<Image Source="Binding Image" Stretch="UniformToFill" AutomationProperties.Name="Binding Title"/>
</Border>
<StackPanel VerticalAlignment="Bottom" Background="StaticResource ListViewItemOverlayBackgroundThemeBrush">
<TextBlock Text="Binding Title" Foreground="StaticResource ListViewItemOverlayForegroundThemeBrush" Height="17" Margin="5,0,5,0" FontSize="11" FontWeight="Medium"/>
</StackPanel>
</Grid>
</DataTemplate>
<local:ItemTemplate x:Key="ItemTemplate"
ShowChineseTemplate_Big ="StaticResource Standard50x50ItemTemplate"
HideChineseTemplate_Big ="StaticResource Standard72x72ItemTemplate"
ShowChineseTemplate_Small ="StaticResource Standard50x50ItemTemplate"
HideChineseTemplate_Small ="StaticResource Standard50x50ItemTemplate" />
</UserControl.Resources>
并将GridView的ItemTemplateSelector设置为:
ItemTemplateSelector="StaticResource ItemTemplate"本回答被提问者和网友采纳

Android 中 Animation 怎么停止

最近遇到一个需求,通过在GridView上改变焦点,并且GridView上每个item有一个隐藏的层,获取焦点之后,通过AlphaAnimation显示出来。

发现当duration大于500时,快速移动焦点,每个item都会播放一次动画。

需求是焦点移动到别的item,当前item的动画停止。

通过测试发现,调用Animation中的cancel()方法不能实现这样的效果。

我使用了以下方法,均未成功:
1.调用Animation的cancel()方法;
2.将播放动画的view invisible。
3.将正在播放的动画置null。

在国外的一个论坛中,找到了结果。

调用view中的clearAnimation()方法,即可消除view上正在运行的动画效果。
参考技术A 调用view中的clearAnimation()方法,即可消除view上正在运行的动画效果。

以上是关于Metro中GridView怎么根据每一个Item设置不同的Template的主要内容,如果未能解决你的问题,请参考以下文章

wpf metro风格,怎么自定义gridview的scrollbar,就是想美化一下

怎么让android中的GridView的item有不同的宽度

如何设置 android gridview 怎么设置 , 一些item可以点击,另外.....

求救: Gridview绑定数据时如何根据数据 显示相应图片。。。

android中gridview的item为啥不能居中

android如何删除gridview中的某个item