Easy Binding(DataContext,TwoWay)
双向绑定在WPF中非常方便。
xmlns ="http://schemas.microsoft.com/winfx/avalon/2005"
xmlns:x ="http://schemas.microsoft.com/winfx/xaml/2005"
Title ="BindingTest for fun ;)" Name ="rootd"
>
< StackPanel Name ="sp" >
< StackPanel .Resources >
< XmlDataProvider x:Key ="BookData" XPath ="/Books" Source ="book.xml" >
</ XmlDataProvider >
< DataTemplate x:Key ="BookDataTemplate" >
< TextBlock FontSize ="12" Foreground ="Red" >
< TextBlock .Text >
< Binding XPath ="Title" />
</ TextBlock.Text >
</ TextBlock >
</ DataTemplate >
</ StackPanel.Resources >
< ListBox
Width ="400" Height ="300" Background ="Honeydew"
ItemsSource ="{Binding Source={StaticResource BookData}, XPath=Book}"
ItemTemplate ="{StaticResource BookDataTemplate}" SelectionChanged ="onChanged"
/>
< TextBox Name ="inputer" Text ="{Binding XPath=Title,
Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
</ StackPanel >
</ Window >
注意不声明inputer的Source,而是当改变选取listbox项时:
{
TextBox inputer=this.FindName("inputer") as TextBox;
inputer.DataContext = (sender as ListBox).SelectedItem;
}
我理解是这样实现的:
listItem对应(数据)XmlNode,初始化时,listItem用模版显示Node的Title文本。
当改变选取listbox项时
通过DataContext(数据上下文)属性,改变数据游标位置,从而改变inputer的绑定源。
由于inputer的绑定模式是双向的,所以手工输入改变inputer的文本时
(UpdateSourceTrigger=PropertyChanged),同步更新绑定源。
这时你会发现,listbox的显示也同步发生改变。
感觉DataContext是个很神奇的东西。
澄清几个概念:
数据源:XmlDataProvider的Source——book.xml
IO级的理解
绑定源:Binding Source={StaticResource BookData}
运行时的理解
小发现:
FindName——有DOM基础的同志一定会回忆起getElementById或selectSingleNodeById
(sender as ListBox)——有面向对象基础的同志都明白这叫“装箱”,我喜欢一致地用C#
附:book.xml
要放到exe的相同路径,并include到project中,惑之。
< Book ISBN ="0-7356-0562-9" Stock ="in" >
< Title > XML in Action </ Title >
< Summary > XML Web Technology </ Summary >
</ Book >
< Book ISBN ="0-7356-1370-2" Stock ="in" >
< Title > Programming Microsoft Windows With C# </ Title >
< Summary > C# Programming using the .NET Framework </ Summary >
</ Book >
< Book ISBN ="0-7356-1288-9" Stock ="out" >
< Title > Inside C# </ Title >
< Summary > C# Language Programming </ Summary >
</ Book >
< Book ISBN ="0-7356-1377-X" Stock ="in" >
< Title > Introducing Microsoft .NET </ Title >
< Summary > Overview of .NET Technology </ Summary >
</ Book >
< Book ISBN ="0-7356-1448-2" Stock ="out" >
< Title > Microsoft C# Language Specifications </ Title >
< Summary > The C# language definition </ Summary >
</ Book >
</ Books >
转载于:https://www.cnblogs.com/civ3/archive/2006/02/12/329188.html
Easy Binding(DataContext,TwoWay)相关推荐
- TemplateBinding与Binding区别,以及WPF自定义控件开发的遭遇
在上一次的文章WPF OnApplyTemplate 不执行 或者执行滞后的疑惑谈到怎么正确的开发自定义控件,我们控件的样式中,属性的绑定一般都是用TemplateBinding来完成,如下一个基本的 ...
- Orange Business Services 全球发布 Easy Go Network,帮助企业加速实现“网络即服务”...
100% 数字化, 软件定义网络( SDN) 产品在 75 个国家上市 在云.移动化.大数据和物联网(IoT)趋势的推动下,企业不断寻求更加智能和更加灵活的网络,以支持他们的数字化转型方案.而网络只有 ...
- 解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题
解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题 一.解决VScode在保存less文件时,自动生成对应的css文件的问题 下载安 ...
- 轻松互联网开发平台(Easy do it,原名WebEasy)20150120更新
集成IKAnalyzer,简化了中文分词(详见下载包内的开发手册).终身免费使用,能开发:大型手机App服务端系统 大型功能性网站开发(如:电子商务网站.社区.门户等) 大数据系统应用开发(与vert ...
- 发布一个Easy Linux 版本,正式命名为EzLinux
EzLinux(Easy Linux)是我们近期推出的Linux/BSD服务项目的一部分.这个发行版是基于CentOS系统,并与CentOS同步发行.EzLinux旨在简化Linux的安装和配置工作, ...
- oneway,twoway
为防止切换过程中PN混淆,不知道该往哪个基站切换,定义ONE-WAY及two way. 如果主小区的邻接小区的邻接小区包含有和主小区相同的PN,对于这种邻区配置称为ONEWAY现象.o ...
- Divan and Kostomuksha (easy version) dp,gcd(2100)
题意 : 对于给定序列,任意打乱顺序,问 :∑i=1ngcd(a1,a2,...,an)\sum_{i=1}^{n}gcd(a_1,a_2,...,a_n)i=1∑ngcd(a1,a2,..., ...
- E1. Rubik‘s Cube Coloring (easy version) 贪心,满二叉树(1300)
题意 : 给定一个层数为k的满二叉树,结点编号为标准的层序遍历的编号 魔方有六个面,如图,每个面一个颜色 树上的结点的颜色也是这六个颜色之一,但是两个相邻结点的颜色必须是 魔方中,颜色相邻的两种颜色 ...
- POJ - 2826 An Easy Problem?!(计算几何,好题)
题目链接:点击查看 题目大意:给出两条线段,问组成的容器最多能接多少雨水 题目分析:既然是接雨水,那么肯定只能是漏斗状,很容易排除掉两种情况: 其中有一条线段平行于x轴 两条线段不相交 还有一种比较难 ...
最新文章
- PHP中memcached的使用
- PHP获取CentOS服务状态,简单linux下php获取服务器状态代码
- 稀疏和L1正规化(Sparsity and Some Basics of L1 Regularization )
- hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (背包问题)
- Java绘图模式概述
- python导入函数模块 为什么会打印两次_5.1.2Python从模块导入函数
- map insert异常失败_处理dubbo反序列化失败的坑
- highcharts 24小时显示数据,显示00:00格式的数据
- Linux中Docker部署MySQL
- maven编译报错 错误: -source 1.5 中不支持 lambda 表达式
- android Tencent x5webview截长图
- matlab pdetool解热传导方程,传热学与应用(李晓炜)基于pdetool的热传导数值计算.pdf...
- 谈谈编程(2) 软件开发中的方法论
- ie浏览器java 脚本下载_如何设置ie浏览器中的activeX控件和插件java脚本下载?
- 编写java格式_编写Java程序打印个人信息,个人信息格式如下:
- python模拟生成微软序列号,python生成随机序列号
- 2019 ICPC 沈阳站 游记
- 特征图注意力_深入理解图注意力机制
- 有关mean iou 言简意赅的介绍 及python 代码实现
- android 仿美团、大众点评滑动viewpager菜单栏
热门文章
- 【人工智能】从GPT-3到AGI:人工智能的进化发展与未来
- c语言输入输出方法总结
- 宝讯网捷电商:拼多多怎么扫条形码找商品?
- CUDA和OpenCL比较
- NOI题库4.3 1526 宗教信仰
- 推荐一款新等级测评工具,首创无缝切换标准/等级、自定义标准/指导库、自动化信息整合、多平台兼容
- 声学大讲堂 - 智能车载音频专题公益讲座来啦!
- mysql对数据进行增删改查(crud)的操作
- 计算机毕业设计JAVA辅导员职责信息管理系统mybatis+源码+调试部署+系统+数据库+lw
- TCP握手协议过程及相关细节参数