简介:
1.WPF绑定使用的源属性必须是依赖项属性,这是因为依赖项属性具有内置的更改通知支持,元素绑定表达式使用了Xaml扩展标记,

WPF绑定一个控件是使用Binding.ElementName,

绑定非控件对象时使用Source,RelativeSource,DataContext属性(WPF特有,而非XAML),只能绑定对象的公有字段.
下边是部分Binding 属性名,完整列表参考 :http://msdn.microsoft.com/zh-cn/library/vstudio/ms750413.aspx

① Source:数据提供者
② RelativeSource:根据当前对象为基础,自动查找源并绑定
③ DataContext:如果未使用Source和RelativeSource,WPF就从当前控件开始在控件树种向上查找,并使用第一个非空的DataContext属性,可以在更高层次容器对象上设置DataContext,如下代码 Text 绑定到 Source属性,但未设置Text的绑定对象,会向上查找DataContext绑定的对象的Source属性

实例:

<Grid>
<StackPanel DataContext="{x:Static SystemFonts.IconFontFamily}">
<TextBox Margin="5" Text="{Binding Path=Source,Mode=OneWay}">
</TextBox>
</StackPanel>
<ComboBox x:Name="lstColors" Margin="3,43,189,196">
<ComboBoxItem Content="Red" HorizontalAlignment="Left" Width="224"/>
<ComboBoxItem Content="Green" HorizontalAlignment="Left" Width="224"/>
<ComboBoxItem Content="Blue" HorizontalAlignment="Left" Width="224"/>
</ComboBox>
<TextBlock Margin="3,117,3,3" x:Name="lblSampleText"
Text="{Binding ElementName=lstColors,Path=SelectedItem.Content}"
Background="{Binding ElementName=lstColors,Path=SelectedItem.Content}" >
</TextBlock>
</Grid>

实例2,使用代码实现绑定:

//使用代码创建绑定
Binding binding = new Binding();
binding.Source = System.Diagnostics.Process.GetCurrentProcess();
binding.Path = new PropertyPath("ProcessName");
binding.Mode = BindingMode.OneWay;
txtOne.SetBinding(TextBlock.TextProperty,binding);
//Path中使用"."标识当前数据源
Binding binding2 = new Binding();
binding2.Source = SystemColors.ActiveBorderBrush;
binding2.Path = new PropertyPath(".");
txtOne.SetBinding(TextBlock.BackgroundProperty, binding2);

2.BindingMode的枚举值有:
① OneWay
② TwoWay
③ OneTime:根据源端属性值设置目标属性值,之后的改变会被忽略,除非调用BindingExpression.UpdateTarge方法
④ OneWayToSource:与OneWay类似,但方向相反,用于目标属性是非依赖项属性的情况
⑤ Default:默认值,根据目标属性确定绑定类型.依赖项属性都由一个元数据 FrameworkPropertyMetadata.BindsTwoWayByDefault用于标识oneway绑定还是twoway绑定
3.从目标到绑定源端数据更新时(binding mode为twoway或者onewaytosource),更新行为(什么时机更新)由Binding.UpdateSourceTrigger枚举属性控制,UpdateSourceTrigger的值有:
① PropertyChanged:目标属性发生变化时立即更新
② LostFocus:目标属性发生变化并且目标丢失焦点时更新源
③ Explicit:除非调用BindingExpression.UpdateSource()方法,否则无法更新
④ Default:根据目标属性的元数据(FrameworkPropertMetadata.DefaulUpdateSourceTrigger)确定更新行为,大多数属性默认行为是PropertyChanged

4.WPF中派生自ItemsControl的类都能显示列表,能够支持集合数据绑定的元素包括ListBox,ComboBox,ListView和DataGrid,Menu,Treeview,ItemsControl中有三个重要属性:
① ItemsSource: 指向一个集合,结合必须支持IEnumerable接口,该集合包含将在列表中显示的所有元素,但基本的IEnumerable接口只支持只读绑定,要使修改能直接反应到绑定的控件上需要使用ObservablCollection类
② DisplayMemberPath:确定用于显示的 对象的属性,如果未设置 则会显示对象的ToString()方法返回的值
③ ItemTemplates:接受一个数据模板,用于为每个项创建可视化外观

最新文章

  1. Windows普通窗口程序
  2. 修改server 2008远程桌面端口
  3. yii2权限控制rbac之菜单menu最详细教程
  4. [CareerCup] 18.8 Search String 搜索字符串
  5. 部署搭建 Saltstack(centos6.6)
  6. Memcached 实例
  7. JQuery总结:选择器归纳、DOM遍历和事件处理、DOM完全操作和动画 (转)
  8. KMP算法_读书笔记
  9. 批量更新数据小心SQL触发器的陷阱
  10. 监听手机晃动(摇一摇)SensorEventListener
  11. bestcoder44#1002
  12. ASP.NET——两个下拉框来实现动态联动
  13. 插入排序的性能测试对比(C与C++实现)
  14. Go 语言数据类型
  15. python--日志模块
  16. mysql数据库卸载和安装
  17. App里面如何正确显示用户头像
  18. linux 压缩工具
  19. ECONOMETRICS CHAPTER1
  20. Java练习之使用StringBuilder

热门文章

  1. 搞Solr这一年(本人QQ 282335345 群412268049 欢迎大家一起学习Solr 非诚勿扰)
  2. python中xrange与range的异同
  3. BZOJ 3223 文艺平衡树
  4. Qt tip 网络请求 QNetworkRequest QJason 处理 JSON
  5. QVariant(相当于是Java里面的Object,起到一个数据类型“擦除”的作用,可以使用Q_DECLARE_METATYPE进行注册)
  6. Solution for &quot;De-serialization exception: Unable to find assembly xxxxx&quot;
  7. RPM常见用法
  8. Linux企业级开发技术(5)——libevent企业级开发之简介
  9. 在外国网站上看到一个用artoolKit做的demo,学习了用gcd创建单列
  10. 【转】Java 枚举7常见种用法