Part I – Common Examples

Basic Binding  
{Binding}  Bind to current DataContext.
{Binding Name}  Bind to the “Name” proeprty of the current DataContext. 
{Bindind Name.Length} Bind to the Length property of the object in the Name property of the current DataContext.
{Binding ElementName=SomeTextBox, Path=Text} Bind to the “Text” property of the element XAML element with name=”SomeTextBox” or x:Name=”SomeTextBox”.
   
XML Binding  
{Binding Source={StaticResource BooksData} XPath=/books/book}

Bind the result of XPath query “/books/book” from the XML in the XmlDataProvider in a parent’s “Resources” elememt with x:Key=”BooksData”.

{Binding XPath=@name}  Bind to the result of an XPath query run on the XML node in the DataContext (for example in an ItemControl’s DataTemplate when the ItemsControl.ItemsSource is bound to an XML data source).
   
Relative Source Binding  
{Binding RelativeSource={RelativeSource Self}} Bind to the target element.
{Binding RelativeSource={RelativeSource Self}, Path=Name} Bind to the “Name” property of the target element.
{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=Title} Bind to the title of the parent window
{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}, AncestorLevel=2}, Path=Name} Bind the the name of the 2nd parent of type ItemsControl.
{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Name} Inside a control template, bind to the name property of the element the template is applied to.
{TemplateBinding Name} Shortcut for the previous example.
   
Collection Current Item Binding  
{Binding /} Bind to the current item in the DataContext (when DataContext is a collection)
{Binding AllItems/} Bind to the current item in the “AllItems“ property of the DataContext {
{Binding AllItems/Name}

Bind to the “Name” property of the current item in the “AllItems“ property of the DataContext *

* Someone has to manage the collection current item, you can do it in code using the CollectionView class or set IsSynchronizedWithCurrentItem="True" on a control that supports it (like ListBox) and is bound to the same collection.

Part II – Alphabetical list of all Binding’s properties

Property Description
BindingGroupName (3.5sp1) The name of the BindingGroup to which this binding belongs. A BindingGroup is used to validate multiple bindings together (for example when multiple changes should be submitted all at once).
BindsDirectlyToSource When using a DataSourceProvider derived class (for example a ObjectDataProvider) setting this property to true will bind to the data source provider object itself, leaving it false will bind to the data contained in the data source.
Converter The converter to use, usually you create the converter in a parent element’s Resources element and reference it using a {StaticResource name) or create the converter as a static field and reference it with {x:Static ns:class.field}
ConverterCulture The culture passed to the converter.
ConverterParameter The parameter passed to the converter
ElementName Element name, when binding to an element in the same XAML scope. Can’t be used if RelativeSource or Source is set.
FallbackValue Value to use when the Binding encounters an error
IsAsync Use when the property’s get accessor takes a long time, to avoid blocking the UI thread, While waiting for the value to arrive, the binding reports the FallbackValue.
Mode

Direction of binding, possible options:

  • TwoWay - updates the target property or the source property whenever the other one changes.  
  • OneWay - updates the target property only when the source property changes.  
  • OneTime - updates the target property only when the application starts or when the DataContext undergoes a change.  
  • OneWayToSource - updates the source property when the target property changes, useful the target property is not a dependency property – put the binding on what would normally be the source and point it to the target.  
  • Default - causes the default Mode value of target property to be used.
NotifyOnSourceUpdated Raise the SourceUpdated event when a value is transferred from the binding target to the binding source.
NotifyOnTargetUpdated Raise the TargetUpdated event when a value is transferred from the binding source to the binding target.
NotifyOnValidationError Raise the Error attached event on the bound object.
Path Source property.
RelativeSource

Binding source relative to the target, possible options: 

  • {x:Static RelativeSource.Self} or {RelativeSource Self} bind to target element. 
  • {RelativeSource FindAncestor, AncestorType={x:Type TypeName}} Bind to the first parent of type TypeName 
  • {RelativeSource FindAncestor, AncestorType={x:Type TypeName}, AnsestorLevel=n} Bind to the nth parent of type TypeName 
  • {RelativeSource TemplatedParent} bind to the element this template is applied to (useful in control templates, consider using TemplateBinding instead.

Can’t be used if ElementName or Source is set.

 Source  Object to use as the binding source. Can’t be used if ElementName or RelativeSource is se
 StringFormat (3.5sp1)  Format string to use when converting the bound value to a string. Works only if the target property is of type string.
 UpdateSourceExceptionFilter  Custom logic for handling exceptions that the binding engine encounters. Only if you add an ExceptionValidationRule to ValidationRules or set ValidatesOnExceptions.
 UpdateSourceTrigger

timing of binding source updates, possible options: 

  • Default - The default UpdateSourceTrigger value of the binding target property. The default is usually PropertyChanged, while the Text property is LostFocus.
  • PropertyChanged - Updates the binding source immediately whenever the binding target property changes.   
  • LostFocus - Updates the binding source whenever the binding target element loses focus.   
  • Explicit - Updates the binding source only when you call the UpdateSource method.
ValidatesOnDataErrors (3.5sp1) Use IDataErrorInfo when validating.
ValidatesOnExceptions (3.5sp1) Treat exceptions as validation failures.
ValidationRules Collection of rules that check the validity of the user input.
 XPath  XPath query that returns the value on the XML binding source to use. Top

The Internationalization Fix

  By default, when you use data binding and the target property is a string, WPF will format your value using the US English culture, to use the correct setting the user seletceted in the control panel add the following code before loading any GUI (the Application.Startup event is a good place)

    FrameworkElement.LanguageProperty.OverrideMetadata(

        typeof(FrameworkElement),

    new FrameworkPropertyMetadata(

        XmlLanguage.GetLanguage( CultureInfo.CurrentCulture.IetfLanguageTag)));

WPF 绑定备忘单的更多相关文章

  1. Cheat (tldr, bropages) - Unix命令用法备忘单

    cheat 是一个Unix命令行小工具,用来查询一些常用命令的惯用法(我们都知道,man page阅读起来太累了,常常是跳到最后去看 examples,但并不是所有man pages里面都有examp ...

  2. Nmap备忘单:从探索到漏洞利用(Part 5)

    这是备忘单的最后一部分,在这里主要讲述漏洞评估和渗透测试. 数据库审计 列出数据库名称 nmap -sV --script=mysql-databases 192.168.195.130 上图并没有显 ...

  3. Nmap备忘单:从探索到漏洞利用(Part 4)

    这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...

  4. Nmap备忘单:从探索到漏洞利用(Part 2)

    这是我们的第二期NMAP备忘单(第一期在此).基本上,我们将讨论一些高级NMAP扫描的技术,我们将进行一个中间人攻击(MITM).现在,游戏开始了. TCP SYN扫描 SYN扫描是默认的且最流行的扫 ...

  5. Objective-C教程备忘单

    终极版本的Objective-C教程备忘单帮助你进行iOS开发. 想开始创建你的第一个iOS应用程序么?那么看一下这篇很棒的教程吧:Create your first iOS 7 Hello Worl ...

  6. HTML5属性备忘单

    在网上闲逛的时候看到了文章,感觉总结的这个html5文章,决定转载过来,在排版的时候也帮助自己重新梳理复习一遍.毕竟学习基础最重要. by zhangxinxu from http://www.zha ...

  7. 【WPF开发备忘】使用MVVM模式开发中列表控件内的按钮事件无法触发解决方法

    实际使用MVVM进行WPF开发的时候,可能会用到列表控件中每行一个编辑或删除按钮,这时直接去绑定,发现无法响应: <DataGridTemplateColumn Header="操作& ...

  8. OWASP WEB会话管理备忘单 阅读笔记

    https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Session_ID_Properties 会话简介 HTTP是一种无状态 ...

  9. 跨站脚本(XSS)备忘单-2019版

    这是一份跨站脚本(XSS)备忘录,收集了大量的XSS攻击向量,包含了各种事件处理.通讯协议.特殊属性.限制字符.编码方式.沙箱逃逸等技巧,可以帮助渗透测试人员绕过WAF和过滤机制. 译者注:原文由Po ...

随机推荐

  1. bzoj 2007 [Noi2010]海拔——最小割转最短路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2007 一个点的高度一定不是0就是1.答案一定形如一个左上角的连通块全是0的点.一个右下角的连 ...

  2. 在linux下利用nohup来后台运行java程序

    nohup java -jar /etc/deny/denyHttp_fat.jar & http://limaoyuan.iteye.com/blog/900928 http://zshou ...

  3. jsp---猜数字游戏,深有感触

    猜数字游戏注意两点.1.随机数和猜的数字不能放在同一个页面,不然随机数不停出现,猜的数字不可能相等的. 2.数据类型的相互转换.包装类Integer和int的用法,前者是类,后者是基本数据类型 cai ...

  4. 深入解析thinkphp中的addAll方法

  5. Spring MVC的困惑url-pattern /和/*的区别

    今天在写项目时发现一个spring 总是报org.springframework.web.servlet.DispatcherServlet noHandlerFound警告: No mapping ...

  6. Codeforces Round #456 B题

    一.题意 给你一个n和一个k,让你从[1, n]区间内选k个数,这k个数异或和最大. 二.思路 我一开始看到这种题,不自觉地就想到,莫非又要搞很复杂的线段树.主席树?貌似还有些难搞啊.然而事实是:Co ...

  7. 使用JdbcTemplate访问数据库

    参考源端:https://blog.csdn.net/liaodehong/article/details/76974827 今天用Spring Boot访问一下数据库,并且把数据返回到页面中,进行增 ...

  8. Ubuntu中将网卡名称eno16777736改回eth0

    一.前言 今天在Vmware Workstation中安装了Ubuntu Server 15.10,然后发现网卡名称出现了问题,主网卡竟然不叫“eth0”,而是叫一个奇怪的名字“eno16777736 ...

  9. Git----远程仓库01

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了 可是用过集中式版本控制系统SVN的童鞋们会站出来说,这些功能在SVN里早就有了,没看出Git ...

  10. [译]2D空间中使用四叉树Quadtree进行碰撞检测优化

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Unity2017.2.0f3 原文出处 : Quick Tip: Use Quadtrees to Detect Lik ...