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 类的应用的更多相关文章

  1. WPF中的Application类。

    原文:WPF中的Application类. Application对象用的名称空间是system.windows 1.手动创建Application对象步骤. 1.1).把项目中的App.Xaml文件 ...

  2. WPF中的常用类汇总:

    1.FrameworkElement: WPF中大部分的控件都可以转化成FrameworkElement,利用FrameworkElement属性获取相应的值: 2.WPF获取当前工作区域的宽度和高度 ...

  3. WPF中的MatrixTransform

    原文:WPF中的MatrixTransform WPF中的MatrixTransform                                                         ...

  4. MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件

    原文  MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件 UI 前沿技术 WPF 中的多点触控操作事件 Charles Petzold 下载代码示例 就在过去几年,多点触控还只是科幻电 ...

  5. 正确理解WPF中的TemplatedParent

    (注:Logical Tree中文称为逻辑树,Visual Tree中文称为可视化树或者视觉树,由于名称不是很统一,文中统一用英文名称代表两个概念,况且VisualTreeHelper和Logical ...

  6. 正确理解WPF中的TemplatedParent (转贴)

    http://blog.csdn.net/idebian/article/details/8761388 (注:Logical Tree中文称为逻辑树,Visual Tree中文称为可视化树或者视觉树 ...

  7. WPF中DataTemplateSelector的简单应用

    WPF中DataTemplateSelector的简单应用 DataTemplateSelector中文叫数据模板选择器,根据数据模型内的属性值选择不同的数据模板,多用于容器如listbox中,达到同 ...

  8. WPF中Image控件绑定到自定义类属性

    首先我们定义一个Student类,有ID,Name,Photo(保存图片路径). using System; using System.Collections.Generic; using Syste ...

  9. WPF中查找控件的扩展类

    在wpf中查找控件要用到VisualTreeHelper类,但这个类并没有按照名字查找控件的方法,于是搜索网络,整理出下面这个类,感觉用起来很是方便. 贴出来,供大家参考. /// <summa ...

随机推荐

  1. word_宏示例

    参考:https://jingyan.baidu.com/article/870c6fc3326588b03fe4beeb.html 内容自适应 Application.Browser.Target ...

  2. 通过mapreduce把mysql的数据读取到hdfs

    前面讲过了怎么通过mapreduce把mysql的一张表的数据放到另外一张表中,这次讲的是把mysql的数据读取到hdfs里面去 具体怎么搭建环境我这里就不多说了.参考 通过mapreduce把mys ...

  3. Grunt相关

    安装Grunt 在命令行输入npm install -g grunt-cli

  4. day6作业(元组,字典,集合)

    默写: 1.元组 字典 集合 列表 各自的特点 2.字典添加 删除 修改 循环 必做: 1.餐厅提供了五种不同的菜,使用元组来存储他们,并循环打印出所有菜名,要求用户输入新加的菜名,加入到菜单中,并重 ...

  5. vmware centos7 动态ip->静态

    TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_ ...

  6. python中logging模块的一些简单用法

    用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所 ...

  7. [Unity插件]Lua行为树(十一):组合节点Parallel

    Parallel节点类似Sequence节点,不同在于Parallel会每帧执行所有的节点.当所有节点返回成功时返回成功,当其中一个节点返回失败时,返回失败并且结束所有的子节点运行. 例如说,给Seq ...

  8. <Linux> 文件夹右下角有锁,解锁

    sudo chown -R $USER 文件夹路径 例如:sudo chown -R $USER ~/scala

  9. beginner_json_setting

  10. 9. 一个list拆分成多个list返回

    /**     * @Title: splitList     * @Description: 1个list分割成多个list     * @param targe 原list     * @para ...