WPF/UWP 模板选择器 DataTemplateSelector
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes; namespace TestLoadPic
{
/// <summary>
/// Interaction logic for TestTemplateSelectorWind.xaml
/// </summary>
public partial class TestTemplateSelectorWind : Window
{
public TestTemplateSelectorWind()
{
InitializeComponent();
LoadData();
lb.ItemsSource = list;
}
public List<Person> list { get; set; } public void LoadData()
{
Random r = new Random();
list = new List<Person>();
for (int i = 0; i < 10; i++)
{ int rnd=r.Next(100);
string sex="男";
if(rnd>50){
sex="女";
} list.Add(new Person
{
name = "张三" + i,
sex=sex,
age = rnd }); }
}
} public class Person
{
public string name { get; set; }
public int age { get; set; }
public string sex { get; set; } } public class MyDataTemplateSelector : DataTemplateSelector
{ public override DataTemplate SelectTemplate(object item, DependencyObject container)
{ var fe = container as FrameworkElement;
var obj = item as Person;
DataTemplate dt = null;
if (obj != null && fe != null)
{
if (obj.age > 50)
dt = fe.FindResource("one") as DataTemplate;
else
dt = fe.FindResource("two") as DataTemplate; }
return dt;
} } }
UI:
<Window x:Class="TestLoadPic.TestTemplateSelectorWind"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestLoadPic"
Title="TestTemplateSelectorWind" Height="448.495" Width="547.826">
<Window.Resources>
<local:MyDataTemplateSelector x:Key="mydt"></local:MyDataTemplateSelector>
<DataTemplate x:Key="one">
<Border BorderThickness="2" BorderBrush="red" Background="AliceBlue">
<StackPanel Orientation="Horizontal" Name="skp" >
<TextBlock Text="{Binding name}" Margin="10"></TextBlock>
<TextBlock Text="{Binding age}" Margin="10"></TextBlock>
<TextBlock Text="{Binding sex}" Margin="10"></TextBlock>
</StackPanel>
</Border>
<DataTemplate.Triggers> <!--男性背景色设置为绿色-->
<DataTrigger Value="男" Binding="{Binding Path=sex}">
<Setter TargetName="skp" Property="Background" Value="Green" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate x:Key="two" >
<Border BorderThickness="1" BorderBrush="Blue" Background="YellowGreen" Padding="5" >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding name}" Margin="10"></TextBlock>
<TextBlock Text="{Binding age}" Margin="10"></TextBlock>
<TextBlock Text="{Binding sex}" Margin="10"></TextBlock>
</StackPanel>
</Border>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox Name="lb" ItemTemplateSelector="{StaticResource mydt}"> </ListBox>
</Grid>
</Window>
WPF/UWP 模板选择器 DataTemplateSelector的更多相关文章
- wpf 模板选择器DataTemplateSelector及动态绑定使用教程
其实也说不上算是教程了,只是把自己学习的代码拿出来分享一下,同时方便以后遇到类似问题的时候翻一下.MSDN里如是说:通常,如果有多个 DataTemplate 可用于同一类型的对象,并且您希望根据每个 ...
- 【转】wpf 模板选择器DataTemplateSelector及动态绑定,DataTemplate.Triggers触发器的使用
通常,如果有多个 DataTemplate 可用于同一类型的对象,并且您希望根据每个数据对象的属性提供自己的逻辑来选择要应用的 DataTemplate,则应创建 DataTemplateSelect ...
- wpf 模板选择器DataTemplateSelector及动态绑定,DataTemplate.Triggers触发器的使用
通常,如果有多个 DataTemplate 可用于同一类型的对象,并且您希望根据每个数据对象的属性提供自己的逻辑来选择要应用的 DataTemplate,则应创建 DataTemplateSelect ...
- win10 uwp 列表模板选择器
本文主要讲ListView等列表可以根据内容不同,使用不同模板的列表模板选择器,DataTemplateSelector. 如果在 UWP 需要定义某些列的显示和其他列不同,或者某些行的显示和其他行不 ...
- ItemsControl绑定的数据模板显示不同样式:模板选择器
总所周知,wpf提供了数据模板,列表控件可以绑定数据实现批量显示同类型数据.不过同个数据模板显示不同的样式怎么办?这时我们可以用模板选择器. 首先我们可以将数据绑定到首先定义资源样式 <Data ...
- 【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- 【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- 2019-11-29-win10-uwp-列表模板选择器
原文:2019-11-29-win10-uwp-列表模板选择器 title author date CreateTime categories win10 uwp 列表模板选择器 lindexi 20 ...
- 2019-9-2-win10-uwp-列表模板选择器
title author date CreateTime categories win10 uwp 列表模板选择器 lindexi 2019-09-02 12:57:38 +0800 2018-2-1 ...
随机推荐
- php小程序生成二维码
<?php getwxacode(); //生成二维码 function getwxacode(){ $url = "https://api.weixin.qq.com/wxa/get ...
- JQuery高级笔记
## 今日内容: 1. JQuery 高级 1. 动画 2. 遍历 3. 事件绑定 4. 案例 5. 插件 ## ...
- mysql登录密码错误,以及设置密码
1.输了几次,密码都错误,忘记了... 2.编辑mysql安装文件夹(D:\mysql-5.7.26-winx64)下的my.ini文件,mysqld标签下输入 skip-grant-tables,字 ...
- Git 设置 用户名 和 邮箱
git config --global user.name "Vincent" git config --global user.email "********@qq.c ...
- python 绘制对象检测框及中文信息标注
# 坐标顺序: 上->左->下->右 def draw_bounding_box_on_image(image, ymin, xmin, ymax, xmax, color='red ...
- Redis入门部署及持久化
软件简介 软件说明 Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品. Redis采用内存(In-Memory)数据集(DataSe ...
- Activity安装与使用
详细安装步骤:http://blog.csdn.net/oyzl68/article/details/16817963
- a标签前端下载火狐兼容和笔记
1.a标签实现前端下载的谷歌兼容 我们都知道,文件下载的一种实现方案就是后端返回文件流,然后前端进行生成a标签并触发点击来下载.但是在火狐浏览器的时候,需要注意一些兼容性问题.原因是火狐的同源策略.官 ...
- libpng Cximage图片处理
跨平台 开源 png图片处理 https://www.cnblogs.com/lidabo/p/6923426.html Cximage BIPro
- Redis 实战之主从复制、高可用、分布式
目录 简介 持久化 主从复制 高可用 Redis-Sentinel .NET Core开发 分布式 Redis-Cluster 配置说明 常见问题 简介 本节内容基于 CentOS 7.4.170 ...