WPF 动态创建 DataTemplate 及数据绑定
WPF 动态创建 DataTemplate 及数据绑定
运行环境:Window7 64bit,.NetFramework4.61,C# 6.0; 编者:乌龙哈里 2017-02-22
参考:
正文:
方法就是在内存中动态生成一个 XAML ,仿照前端一样写一个 DataTemplate 。如下面的前端:
<Window.Resources>
<DataTemplate x:Key="123">
<TextBox Text="{Binding [3]}"/>
</DataTemplate>
</Window.Resources>
下面开始模拟它写,注意:
XNamspace、XElement 都要 using System.Xml.Linq;
XmlReader 要 using System.Xml;
XamlReader 要 using System.Windows.Markup;
示例1:
List<int[]> list = new List<int[]>();
list.Add(new int[] {1,2,3,4 });
list.Add(new int[] { 3,4,5,6 });
list.Add(new int[] { 4, 5, 6, 7 });
list.Add(new int[] { 10,12, 13, 14 });
GridView view = new GridView();
view.Columns.Add(new GridViewColumn { Header="A",DisplayMemberBinding=new Binding("[0]")});
view.Columns.Add(new GridViewColumn { Header = "B",DisplayMemberBinding=new Binding("[1]")});
view.Columns.Add(new GridViewColumn { Header = "C", DisplayMemberBinding = new Binding("[2]") });
XNamespace ns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
XElement xe =new XElement(ns +"DataTemplate",
new XAttribute("xmlns", "http://schemas.microsoft.com/winfx/2006/xaml/presentation"),
new XElement(ns +"TextBox", new XAttribute("Text", @"{Binding [3]}"))
);
XmlReader xr = xe.CreateReader();
DataTemplate dt = XamlReader.Load(xr) as DataTemplate;
view.Columns.Add(new GridViewColumn { Header = "D", CellTemplate = dt });
//lsvShow 是个 ListView 控件
lsvShow.View = view;
lsvShow.ItemsSource = list;
运行结果如下图:

WPF 动态创建 DataTemplate 及数据绑定的更多相关文章
- WPF动态创建Image的显示问题
原文:WPF动态创建Image的显示问题 最近学习WPF,看到一篇教程讲解如何动态创建Image控件,自己练手时候无论如何也显示不出图片.刚开始以为是图片的路径有问题,可后来将图片的路径设为相对路径或 ...
- [WPF]如何使用代码创建DataTemplate(或者ControlTemplate)
1. 前言 上一篇文章([UWP]如何使用代码创建DataTemplate(或者ControlTemplate))介绍了在UWP上的情况,这篇文章再稍微介绍在WPF上如何实现. 2. 使用Framew ...
- WPF 中动态创建和删除控件
原文:WPF 中动态创建和删除控件 动态创建控件 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindName(" ...
- WPF 中动态创建、删除控件,注册控件名字,根据名字查找控件
动态创建控件 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindName("Name") as 控 ...
- WPF在代码中创建DataTemplate时候的异常
今天写段程序用到了在代码中手动创建DataTemplate, var factory = new FrameworkElementFactory(typeof(OperationColumn)); ...
- 在WPF中创建可换肤的用户界面
原文:在WPF中创建可换肤的用户界面 在WPF中创建可换肤的用户界面. ...
- WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)对象绑定
原文:WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)对象绑定 WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件) 上面的 ...
- 《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中
http://blog.csdn.net/mazhaojuan/article/details/8599167 先看一下我要实现的功能界面: 这篇文章主要介绍:后台一般处理程序把从数据库查找的数据,转 ...
- 基于jquery的表格动态创建,自动绑定,自动获取值
最近刚加入GUT项目,学习了很多其他同事写的代码,感觉受益匪浅. 在GUT项目中,经常会碰到这样一个问题:动态生成表格,包括从数据库中读取数据,并绑定在表格中,以及从在页面上通过jQuery新增删除表 ...
随机推荐
- HDU4612Warm up 边双连通 Tarjan缩点
N planets are connected by M bidirectional channels that allow instant transportation. It's always p ...
- shell编程--遍历目录下的文件
假定目录text下有如下文件 目录:dir_1.dir_2.dir_3 文件:text_1.text_2 遍历目录下所有的文件是目录还是文件 if -- if类型: #!bin/sh for ...
- 报错 Inferred type 'S' for type parameter 'S' is not within its bound; 解决办法
出现情况: Inferred type 'S' for type parameter 'S' is not within its bound; should extends xxxxxx 出现这种问题 ...
- hexo个人博客搭建
遇见西门的个人博客 https://www.simon96.online/ 内容详细!
- python(十)、进程
一.基本概念 进程和线程是编程中非常重要的概念,它是并发和异步的基础性知识. 1.进程 概念:程序在并发环境中的执行过程.进程作为系统资源分配.调度.管理和独立运行的基本单位,决定了操作系统的四大特性 ...
- 接口测试框架——第四篇-url、excel内容等
到现在为止,发送邮件(email_module).读excel(excel_module).发送requests(requests_module).常量(setting)我们都已经完成了,看看第一篇中 ...
- 【DUBBO】Dubbo原理解析-服务引用
服务引用是服务的消费方向注册中心订阅服务提供方提供的服务地址后向服务提供方引用服务的过程. 服务的应用方在spring的配置实例如下: <dubbo:referenceid="demo ...
- DataBinder.Eval的正确使用
本文介绍下,asp.net编程中有关DataBinder.Eval的用法,学习下asp.net DataBinder.Eval的用法,有需要的朋友参考下. 代码示例 :<%# Bind(&quo ...
- vue-router教程二(要素篇之新手入门)
注意,我们将在指南中使用es 2015代码样本.此外,所有示例都将使用VUE的完整版本来使在线模板编译成为可能.请参阅这里的更多细节. 用vue路由器创建单页应用程序是非常简单的.使用vue.js,我 ...
- drill 数据源配置
1. mongodb { "type":"mongo", "connection":"mongodb://user:passwor ...