下载示例: http://files.cnblogs.com/civ3/Easy%20Binding.rar
双向绑定在WPF中非常方便。

< Window  x:Class ="SDKSample.BindingTest"
    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项时:

         void  onChanged( object  sender, RoutedEventArgs eas)
         {
            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中,惑之。

< Books >
         < 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)相关推荐

  1. TemplateBinding与Binding区别,以及WPF自定义控件开发的遭遇

    在上一次的文章WPF OnApplyTemplate 不执行 或者执行滞后的疑惑谈到怎么正确的开发自定义控件,我们控件的样式中,属性的绑定一般都是用TemplateBinding来完成,如下一个基本的 ...

  2. Orange Business Services 全球发布 Easy Go Network,帮助企业加速实现“网络即服务”...

    100% 数字化, 软件定义网络( SDN) 产品在 75 个国家上市 在云.移动化.大数据和物联网(IoT)趋势的推动下,企业不断寻求更加智能和更加灵活的网络,以支持他们的数字化转型方案.而网络只有 ...

  3. 解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题

    解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题 一.解决VScode在保存less文件时,自动生成对应的css文件的问题 下载安 ...

  4. 轻松互联网开发平台(Easy do it,原名WebEasy)20150120更新

    集成IKAnalyzer,简化了中文分词(详见下载包内的开发手册).终身免费使用,能开发:大型手机App服务端系统 大型功能性网站开发(如:电子商务网站.社区.门户等) 大数据系统应用开发(与vert ...

  5. 发布一个Easy Linux 版本,正式命名为EzLinux

    EzLinux(Easy Linux)是我们近期推出的Linux/BSD服务项目的一部分.这个发行版是基于CentOS系统,并与CentOS同步发行.EzLinux旨在简化Linux的安装和配置工作, ...

  6. oneway,twoway

            为防止切换过程中PN混淆,不知道该往哪个基站切换,定义ONE-WAY及two way. 如果主小区的邻接小区的邻接小区包含有和主小区相同的PN,对于这种邻区配置称为ONEWAY现象.o ...

  7. 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∑n​gcd(a1​,a2​,..., ...

  8. E1. Rubik‘s Cube Coloring (easy version) 贪心,满二叉树(1300)

    题意 : 给定一个层数为k的满二叉树,结点编号为标准的层序遍历的编号 魔方有六个面,如图,每个面一个颜色 树上的结点的颜色也是这六个颜色之一,但是两个相邻结点的颜色必须是 魔方中,颜色相邻的两种颜色 ...

  9. POJ - 2826 An Easy Problem?!(计算几何,好题)

    题目链接:点击查看 题目大意:给出两条线段,问组成的容器最多能接多少雨水 题目分析:既然是接雨水,那么肯定只能是漏斗状,很容易排除掉两种情况: 其中有一条线段平行于x轴 两条线段不相交 还有一种比较难 ...

最新文章

  1. PHP中memcached的使用
  2. PHP获取CentOS服务状态,简单linux下php获取服务器状态代码
  3. 稀疏和L1正规化(Sparsity and Some Basics of L1 Regularization )
  4. hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (背包问题)
  5. Java绘图模式概述
  6. python导入函数模块 为什么会打印两次_5.1.2Python从模块导入函数
  7. map insert异常失败_处理dubbo反序列化失败的坑
  8. highcharts 24小时显示数据,显示00:00格式的数据
  9. Linux中Docker部署MySQL
  10. maven编译报错 错误: -source 1.5 中不支持 lambda 表达式
  11. android Tencent x5webview截长图
  12. matlab pdetool解热传导方程,传热学与应用(李晓炜)基于pdetool的热传导数值计算.pdf...
  13. 谈谈编程(2) 软件开发中的方法论
  14. ie浏览器java 脚本下载_如何设置ie浏览器中的activeX控件和插件java脚本下载?
  15. 编写java格式_编写Java程序打印个人信息,个人信息格式如下:
  16. python模拟生成微软序列号,python生成随机序列号
  17. 2019 ICPC 沈阳站 游记
  18. 特征图注意力_深入理解图注意力机制
  19. 有关mean iou 言简意赅的介绍 及python 代码实现
  20. android 仿美团、大众点评滑动viewpager菜单栏

热门文章

  1. 【人工智能】从GPT-3到AGI:人工智能的进化发展与未来
  2. c语言输入输出方法总结
  3. 宝讯网捷电商:拼多多怎么扫条形码找商品?
  4. CUDA和OpenCL比较
  5. NOI题库4.3 1526 宗教信仰
  6. 推荐一款新等级测评工具,首创无缝切换标准/等级、自定义标准/指导库、自动化信息整合、多平台兼容
  7. 声学大讲堂 - 智能车载音频专题公益讲座来啦!
  8. mysql对数据进行增删改查(crud)的操作
  9. 计算机毕业设计JAVA辅导员职责信息管理系统mybatis+源码+调试部署+系统+数据库+lw
  10. TCP握手协议过程及相关细节参数