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;

运行结果如下图:

最新文章

  1. react native AsyncStorage的使用
  2. spring4+hibernate4+struts2项目整合的步骤及注意事项
  3. [Linux] - CentOS中文乱码解决办法
  4. iOS及Mac开源项目和学习资料【超级全面】
  5. CSS打造经典鼠标触发显示选项
  6. css3 怎么实现像书籍装订线的效果
  7. sequel 连接不上,命令行能连上
  8. 关于layoutSubviews以及drawRect方法
  9. 水leetcode 爬楼梯
  10. SendMessage API
  11. hdu3308--LCIS 最大连续递增序列长度
  12. ios开发问题:添加库和复制其它工程文件编译错误问题
  13. Windows Phone开发(29):隔离存储C
  14. POJ1719- Shooting Contest(二分图最大匹配)
  15. 02--Java TCP Socket编程
  16. jquery删除内容是动态修改序号
  17. C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法
  18. Laravel 门面实例教程 —— 创建自定义 Facades 类
  19. beta阶段贡献分配实施
  20. Nginx web服务优化 (一)

热门文章

  1. for循环使用append问题
  2. 每天一个linux命令:【转载】pwd命令
  3. LOJ2360. 「NOIP2016」换教室【概率DP】【Floyed】【傻逼题】
  4. BZOJ1227 SDOI2009 虔诚的墓主人【树状数组+组合数】【好题】*
  5. MySQL的一些常用sql函数(持续更新。。)
  6. 20165212 预备作业3 Linux安装及学习
  7. LOJ#3054. 「HNOI 2019」鱼
  8. 【DUBBO】 Dubbo原理解析-Dubbo内核实现之基于SPI思想Dubbo内核实现
  9. ecmall在linux下的安装注意事项(转)
  10. win10下启动zkui