WPF 中关于 DataTemplateSelector 类的应用
MSDN的解释:
提供一种根据数据对象和与该数据绑定的元素来选择数据模板 DataTemplate 的方法。
示例代码:
<Window x:Class="WpfApplication1.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window2" Height="300" Width="300" Loaded="Window2_OnLoaded">
<Window.Resources>
<DataTemplate x:Key="T1">
<TextBlock Text="{Binding}" Background="DarkBlue" Foreground="White" Padding="10,0"></TextBlock>
</DataTemplate> <DataTemplate x:Key="T2">
<TextBlock Text="{Binding}" Background="DarkCyan" Foreground="White" Padding="10,0"></TextBlock>
</DataTemplate> <local:CTemplateSelector x:Key="TS"></local:CTemplateSelector>
</Window.Resources>
<Grid>
<ListBox x:Name="Lbox" ItemTemplateSelector="{StaticResource TS}"></ListBox>
</Grid>
</Window>
public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();
} private void Window2_OnLoaded(object sender, RoutedEventArgs e)
{
var source = new List<string>
{
"","","",""
}; this.Lbox.ItemsSource = source;
}
}
public class CTemplateSelector:DataTemplateSelector
{
public override DataTemplate SelectTemplate( object item, DependencyObject container )
{
if (item == null) throw new ArgumentNullException("item"); var element = container as FrameworkElement; if ( element != null )
{
var str = item.ToString();
int val; if (int.TryParse(str, out val))
{
if (val% == )
{
return element.FindResource("T1") as DataTemplate;
}
else
{
return element.FindResource( "T2" ) as DataTemplate;
}
}
} return base.SelectTemplate(item, container);
}
}
这个示例就是在一个 ListBox 控件中实现隔行换色的功能,当然也可以通过其他方法实现。
运行结果:
参考:
http://msdn.microsoft.com/zh-cn/library/system.windows.controls.datatemplateselector%28v=vs.110%29.aspx
WPF 中关于 DataTemplateSelector 类的应用的更多相关文章
- WPF中的Application类。
原文:WPF中的Application类. Application对象用的名称空间是system.windows 1.手动创建Application对象步骤. 1.1).把项目中的App.Xaml文件 ...
- WPF中的常用类汇总:
1.FrameworkElement: WPF中大部分的控件都可以转化成FrameworkElement,利用FrameworkElement属性获取相应的值: 2.WPF获取当前工作区域的宽度和高度 ...
- WPF中的MatrixTransform
原文:WPF中的MatrixTransform WPF中的MatrixTransform ...
- MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件
原文 MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件 UI 前沿技术 WPF 中的多点触控操作事件 Charles Petzold 下载代码示例 就在过去几年,多点触控还只是科幻电 ...
- 正确理解WPF中的TemplatedParent
(注:Logical Tree中文称为逻辑树,Visual Tree中文称为可视化树或者视觉树,由于名称不是很统一,文中统一用英文名称代表两个概念,况且VisualTreeHelper和Logical ...
- 正确理解WPF中的TemplatedParent (转贴)
http://blog.csdn.net/idebian/article/details/8761388 (注:Logical Tree中文称为逻辑树,Visual Tree中文称为可视化树或者视觉树 ...
- WPF中DataTemplateSelector的简单应用
WPF中DataTemplateSelector的简单应用 DataTemplateSelector中文叫数据模板选择器,根据数据模型内的属性值选择不同的数据模板,多用于容器如listbox中,达到同 ...
- WPF中Image控件绑定到自定义类属性
首先我们定义一个Student类,有ID,Name,Photo(保存图片路径). using System; using System.Collections.Generic; using Syste ...
- WPF中查找控件的扩展类
在wpf中查找控件要用到VisualTreeHelper类,但这个类并没有按照名字查找控件的方法,于是搜索网络,整理出下面这个类,感觉用起来很是方便. 贴出来,供大家参考. /// <summa ...
随机推荐
- Android标题头滑动渐变,Titlebar滑动渐变,仿美团饿了么标题头渐变;
原理就是滑动中改变透明度: 核心代码: rv.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public vo ...
- 由echarts想到的js中的时间类型
在工作中使用echarts时,偶然发现折线图中对时间类型变量的用法: now前面的+号何解? now = new Date(+now + oneDay); 后来查阅资料,看到一篇博客,解释如下:这是对 ...
- 详解CSS3属性前缀(转)
原文地址 CSS3的属性为什么要带前缀 使用过CSS3属性的同学都知道,CSS3属性都需要带各浏览器的前缀,甚至到现在,依然还有很多属性需要带前缀.这是为什么呢? 我的理解是,浏览器厂商以前就一直在实 ...
- python-运算符重载
1. __item__ class X: def __init__(self, data=None): self.data = data or [] # 同样可用于 dict def __setite ...
- EXCEL workbook.saveas 函数详解
本问所有资料来自于 Excel2003 VBA帮助文件,张荣整理,适用于DELPHI,VB的高级语言操作Excel用 ExcelApplication.WorkBook.SaveAs(filename ...
- Maven私服仓库类型
1. 代理仓库(Proxy Repository) 顾名思义是代理第三方仓库的,如: maven-central nuget.org-proxy 版本策略(Version Policy): Relea ...
- javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.Size' validating type 'java.util.Date'.
开始是 javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Intege ...
- python大法好——修改文件、函数
1.修改文件 补充上次没洗完的: 想要修改某个文件里一块地方,可以使用seek函数找到位置write函数修改. 是不是觉得这很简单? 但是如果你这样操作很可能会出现乱码. 因为由于字节数的不同,编码的 ...
- idea 未实现接口红线提示,重复代码波浪线提示,自动换行,控制台输出内容自动换行
01,Could not autowire. No beans of 'UserMapper' type found 01.1,问题描述,通过反射动态实现的接口在调用时会出现以上提示,常见的如 ORM ...
- 白鹭引擎 - 遮罩( Rectangle )
1: 矩形遮罩 class Main extends egret.DisplayObjectContainer { /** * Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用 ...