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新增删除表 ...
随机推荐
- ajax完成团队信息异步添加【实际项目】
第一:ajax往后台传参如何串(目前理解是json数组直接传给对象) 第二:ajax返回的数值通过PrintWriter.print方法返回 [参考前台页面关于团队信息是如何实现的] 参考页面user ...
- stm32寄存器版学习笔记04 定时计数器中断
STM32共有8个定时计数器,其中TIME1和TIME8是高级定时器,TIME2~TIME5是通用定时器,TIME6和TIME7是基本定时器.以TIME3为例总结定时计数器的基本用法. 1.TIM3的 ...
- getServletContext()方法详解
javax.servlet.ServletContext接口 一个servlet上下文是servlet引擎提供用来服务于Web应用的接口.Servlet上下文具有名字(它属于Web应用的名字)唯一映射 ...
- 如何将常规的web 应用程序转化为云上多租户 SaaS 解决方案
如何将web 应用程序转化为多租户 SaaS 解决方案 https://www.ibm.com/developerworks/cn/cloud/library/cl-multitenantsaas/i ...
- WebLogic11g-创建域(Domain)及基本配置
转:http://www.codeweblog.com/weblogic11g-%e5%88%9b%e5%bb%ba%e5%9f%9f-domain-%e5%8f%8a%e5%9f%ba%e6%9c% ...
- 【angularJS】MVC
angularJS中的mvc是借助于$scope实现的. View(视图), 即 HTML. Model(模型), 当前视图中可用的数据.scope 是模型.scope 是一个 JavaScript ...
- {Reship}{Emgu}{vs2010}C#配置Emgu
=============================================================================================This Ar ...
- 嵌入式无法使用QAudioDeviceInfo类
修改: 1.修改pro文件 增加 QT += multimedia 2.修改Makefile文件,LIBS = $(SUBLIBS) -L/opt/qt-4.8.5/lib -lQtMulti ...
- centos vi显示中文
1. 控制台终端显示中文 修改 /etc/sysconfig/i18n 文件如下: #LANG="en_US.UTF-8"LANG="zh_CN.GB2312" ...
- bzoj 2535 && bzoj 2109 [Noi2010]Plane 航空管制——贪心
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2535 https://www.lydsy.com/JudgeOnline/problem.p ...