Wpf 数据绑定简介、实例1
2016-08-10 16:38
344 查看
简介:
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属性
实例:
实例2,使用代码实现绑定:
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.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:接受一个数据模板,用于为每个项创建可视化外观
相关文章推荐
- WPF DataGrid 之数据绑定--实例2
- WPF 简单数据绑定实例
- Wpf ListBox数据绑定实例1--绑定字典集合
- WPF教程(三十三)数据绑定简介
- 入门-WPF数据绑定-实例
- Wpf ListBox数据绑定实例1--绑定字典集合
- C#中WPF ListView绑定数据的实例详解
- WPF ListView绑定数据实例
- Wpf 数据绑定实例2
- WPF中的单实例对象数据绑定
- WPF:Data Binding 数据绑定基础(2)
- 使用Blend来为WPF程序制作Textbox数据绑定效果
- treeview 控件动态绑定数据部分实例代码
- treeview 控件动态绑定数据部分实例代码
- WPF笔记(4.5 Master-Detail数据绑定)——Data Binding
- wpf学习笔记-数据绑定功能总结
- WPF中,如何将绑定源设置到单件实例
- WPF之数据绑定
- .NET常用的数据绑定代码实例:
- Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)