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如何删除gridview中的某个item
比如我要删除第三行的第二个item,请问如何删除
思路:
删除某个item,也就是删除传入adapter中数据的相应位置,然后再做刷新。
代码
ArrayList data_list = new ArrayList<Map<String, Object>>();Adapter sim_adapter = new SimpleAdapter(this, data_list, R.layout.item, from, to);
//配置适配器
gview.setAdapter(sim_adapter);
//这里的data_list就是相应的数据。
如果需要删除某个item,也就是删除data_list中相应的位置。比如删除第二个item,则
只需要
data_list.remove(1);//移除数据sim_adapter.notifyDataSetChanged();//刷新数据 参考技术A 在baseAdapter的getItem里设置某按钮的点击事件在里面写入
list.remove(position);//list传入的List对象,position是getItem参数
notifyDataSetChanged(); 参考技术B 把加载到适配器中的数据删除,再刷新就可删除item追问
能不能具体点。
我知道先remove,再更新adapter
但是我不知道如何remove到我需要的那个item,就是不知道具体格式怎么写,求指教
在Item的监听事件里面写。点击item删除list中当前item数据,再调用适配器中 notifiData..这个方法(刷新数据的)
追问你可能没理解,我现在有一个界面,里面有很多个测试项,其中有一条关于GPS的测试项,我需要的是我在获取到手机是否有GPS功能的信息后来判断我这个界面是否显示GPS测试这一项,如果不支持,进入这个界面后么,直接就不显示这个item。。。
以上是关于Metro中GridView怎么根据每一个Item设置不同的Template的主要内容,如果未能解决你的问题,请参考以下文章
wpf metro风格,怎么自定义gridview的scrollbar,就是想美化一下
怎么让android中的GridView的item有不同的宽度
如何设置 android gridview 怎么设置 , 一些item可以点击,另外.....