WPF 绑定备忘单
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:
|
| 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:
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:
|
| 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 绑定备忘单的更多相关文章
- Cheat (tldr, bropages) - Unix命令用法备忘单
cheat 是一个Unix命令行小工具,用来查询一些常用命令的惯用法(我们都知道,man page阅读起来太累了,常常是跳到最后去看 examples,但并不是所有man pages里面都有examp ...
- Nmap备忘单:从探索到漏洞利用(Part 5)
这是备忘单的最后一部分,在这里主要讲述漏洞评估和渗透测试. 数据库审计 列出数据库名称 nmap -sV --script=mysql-databases 192.168.195.130 上图并没有显 ...
- Nmap备忘单:从探索到漏洞利用(Part 4)
这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...
- Nmap备忘单:从探索到漏洞利用(Part 2)
这是我们的第二期NMAP备忘单(第一期在此).基本上,我们将讨论一些高级NMAP扫描的技术,我们将进行一个中间人攻击(MITM).现在,游戏开始了. TCP SYN扫描 SYN扫描是默认的且最流行的扫 ...
- Objective-C教程备忘单
终极版本的Objective-C教程备忘单帮助你进行iOS开发. 想开始创建你的第一个iOS应用程序么?那么看一下这篇很棒的教程吧:Create your first iOS 7 Hello Worl ...
- HTML5属性备忘单
在网上闲逛的时候看到了文章,感觉总结的这个html5文章,决定转载过来,在排版的时候也帮助自己重新梳理复习一遍.毕竟学习基础最重要. by zhangxinxu from http://www.zha ...
- 【WPF开发备忘】使用MVVM模式开发中列表控件内的按钮事件无法触发解决方法
实际使用MVVM进行WPF开发的时候,可能会用到列表控件中每行一个编辑或删除按钮,这时直接去绑定,发现无法响应: <DataGridTemplateColumn Header="操作& ...
- OWASP WEB会话管理备忘单 阅读笔记
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Session_ID_Properties 会话简介 HTTP是一种无状态 ...
- 跨站脚本(XSS)备忘单-2019版
这是一份跨站脚本(XSS)备忘录,收集了大量的XSS攻击向量,包含了各种事件处理.通讯协议.特殊属性.限制字符.编码方式.沙箱逃逸等技巧,可以帮助渗透测试人员绕过WAF和过滤机制. 译者注:原文由Po ...
随机推荐
- python 常见问题总结
1.ModuleNotFoundError: No module named 'urllib2' 在python3.x版本中,urllib和urllib2包集合成在一个包了import urllib2 ...
- sql server常用日期格式化
/*8 24 108 - hh:mm:ss */ Select CONVERT(varchar(), GETDATE(), )-- :: Select CONVERT(varchar(), GETDA ...
- "废物利用"也抄袭——“完全”DIY"绘图仪"<三、上位机程序设计>
上位机的程序主要是解析图片和生成较好的代码,现在实现的功能有灰度打印,二值打印,轮廓打印,骨骼打印.当然,必不可少的是打印大小的控制.测试了一些图片,总体来说,打印速度依次加快,因为打印的内容依次减少 ...
- arm-linux-gcc配置安装
1.首先去下载arm-linux-gcc压缩包 https://pan.baidu.com/s/15QLL-mf0G5cEJbVP5OgZcA 密码:ygf3 2.把压缩包导入到Linux系统:htt ...
- 文件读取错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in position 884: invalid start byte
参考: https://segmentfault.com/q/1010000004268196/a-1020000004269556 ubuntu下Python3使用open('filename', ...
- Quartz实现JAVA定时任务的动态配置
什么是动态配置定时任务? 首先说下这次主题,动态配置.没接触过定时任务的同学可以先看下此篇:JAVA定时任务实现的几种方式 定时任务实现方式千人千种,不过基础的无外乎 1.JDK 的Timer类 2. ...
- Linux常用命令之-grep
简介 grep全称Global Regular Expression Print是一种强大的文本搜索工具,它能使用给定的正则表达式按行搜索文本输出,文件,目录等,统计并输出匹配的信息,grep在文本查 ...
- django-常用过滤器
django常用过滤器 add :字符串相加,数字相加,列表相加,如果失败,将会返回一个空字符串. default:提供一个默认值,在这个值被django认为是False的时候使用.比如:空字符串.N ...
- Rhythmk 一步一步学 JAVA (21) JAVA 多线程
1.JAVA多线程简单示例 1.1 .Thread 集成接口 Runnable 1.2 .线程状态,可以通过 Thread.getState()获取线程状态: New (新创建) Runnable ...
- Spring NamedParameterJdbcTemplate 详解
转自: https://zmx.iteye.com/blog/373736 NamedParameterJdbcTemplate类是基于JdbcTemplate类,并对它进行了封装从而支持命名参数特性 ...