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

最新文章

  1. 微信小程序 关于底部导航设置
  2. 总结-javascript-ajax
  3. C#中判断一个集合是另外一个集合的子集
  4. Static Cell-静态TableView
  5. Tip和菜单的实现方式
  6. Java中的final修饰符
  7. (二)java特征
  8. nginx 多站点配置方法集合(转)
  9. Codevs 1287 矩阵乘法&amp;&amp;Noi.cn 09:矩阵乘法(矩阵乘法练手题)
  10. Redis集群战法整理
  11. java实验7-多线程编程
  12. myeclipse集成weblogicserver
  13. 支持向量机SVM(一)
  14. Git知识总览(二) git常用命令概览
  15. Linux必备操作vim
  16. Go-day02
  17. Easyui中 alert 带回调函数的 消息框
  18. 1.3.1、CDH 搭建Hadoop在安装之前(端口---Cloudera Manager和Cloudera Navigator使用的端口)
  19. POJ 3159 Candies (图论,差分约束系统,最短路)
  20. ubuntu下安装程序的五种方法

热门文章

  1. (转)C# WebApi 身份认证解决方案:Basic基础认证
  2. Java笔试面试题整理第一波
  3. scrapy框架之CrawlSpider操作
  4. 查看oracle用户执行的sql语句历史记录
  5. linux命令之vi文本编辑器
  6. 修改之前某次commit日志和内容
  7. .NET C#获取当前网页地址
  8. centos7安装LNMP与Laravel遇到的一些小问题
  9. tornado-websocket
  10. [Lua]string与中文