wpf 数据绑定1

数据绑定实质上就是把一些任意的.net对象绑定到一起。那么绑定的源头就有1.绑定到目标对象的属性(通常为wpf元素)2.其他任何数据源

数据绑定的关键是System.Windows.Data.Binding类,他会把两个属性粘在一起,并在他们之间建立一条通信通道

            Binding binding = new Binding();
            //设置源对象
            binding.Source = tree;
            //设置源属性
            binding.Path = new PropertyPath("SelectedItem.Header");
            //添加到目标属性
            //currentName.SetBinding(TextBlock.TextProperty, binding);
            BindingOperations.SetBinding(currentName, TextBlock.TextProperty, binding);

绑定有源属性好目标属性两个概念。所谓的源属性是通过两步来实现的。 设置源对象给binding的Source属性==》并把与他相关联的属性的名字通过一个propertyPath实例传递给Path属性。将binding与目标属性相关联,可以调用FrameworldElements对象的SetBinding方法。(在这个方法的内部好像是调用了BindingOperations.SetBinding方法),这样就有了上面代码中两种将binding添加到目标属性的方式。

使用xaml添加binding的方式如下代码所示:

        <TextBlock Text="{Binding ElementName=tree,Path=SelectedItem.Header}"></TextBlock>

注意在xaml中不是使用Source属性来来设置源对象的,而是使用ElementName来设置,同样可以使用Source属性来设置源对象。

        <TextBlock Text="{Binding Source={StaticResource tree},Path=SelectedItem.Header}"></TextBlock>

绑定的移除:

如果一个绑定在软件的生命周期内已经没用了,可以通过BindingOperation.ClearBinding方法来移除绑定。

BindingOperations.ClearBinding(currentName,TextBlock.TextProperty);
//移除某个控件的单个属性绑定
BindingOperations.ClearBinding(currentName);
//移除某个控件的所有属性的绑定
//同样为控件赋值也会移除绑定,但是这种情况仅能清除单项绑定

能够获取Binding源的属性:

1. ElementName(string)

源为一个元素,Name为此元素的name属性。

2. Source(Object)

3. RelativeSource(RelativeSource)

它通过与目标元素的关系获得相应的元素。

使源元素为目标元素本身:{Binding RelativeSource={RelativeSource self}}

使源元素为目标元素的TemplateParent属性: {Binding RelativeSource={RelativeSource TemplateParent}}...还有几种方式,现在还不能过理解等之后再去理解。

绑定的源为普通.net属性

使用.net属性作为源的时候,如果Source发生了变化但是在wpf的UI上是不会显示变化的。最好是使用INotifyPropertyChanged接口,该接口有一个PropertyChanged事件。当然INotifyPropertyChanged接口是针对单个类的,如果针对集合可以使用ObservableCollection<>这个集合类。

时间: 2024-10-07 05:27:02

wpf 数据绑定1的相关文章

WPF 数据绑定 使用Code First with Database

一.准备工作 1.开发工具 Visual Studio 2013 2.安装Code First with Database 3.创建示例数据库 MyShop USE MyShop GO CREATE TABLE [dbo].[Categories] ( [CategoryId] [INT] NOT NULL IDENTITY , [Name] [NVARCHAR](MAX) , CONSTRAINT [PK_dbo.Categories] PRIMARY KEY ( [CategoryId] )

WPF 数据绑定基础

纯理论,可能会枯燥. .net 技术群: 199281001 ,欢迎加入. 1.目标对象一定是派生自DependencyObject的对象,并且目标属性必须是依赖属性,否则数据绑定操作将会失   败.绑定源对象可以不是依赖对象和依赖属性. 2.定义了依赖属性时,FrameworkPropertyMetadataOptions.NotDataBindable 标志会影响依赖属性的绑定.当改变源对象依赖属性值后,绑定目标可以立即得以更新,开发人员不需要响应事件来手动编写响应代码. 3.移除绑定:开发

WPF——数据绑定(一)什么是数据绑定

注意:本人初学WPF,文中可能有表达或者技术性问题,欢迎指正!谢谢! 一:什么是数据绑定? “Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简单而一致的方法来显示数据以及与数据交互. 元素能够以 公共语言运行时 (CLR) 对象 和 XML 形式绑定到来自各种数据源的数据.“ 这一段的解释来自于MSDN(貌似是机器翻译),我个人理解,数据绑定就是把我们需要操作的两个或多个对象的属性值相互关联的一种方便我们编程的技术. 二:一个绑定关系的四

WPF 10天修炼 第十天- WPF数据绑定

WPF数据绑定 数据绑定到元素属性是将源对象指定为一个WPF元素,并且源属性是一个依赖属性,依赖属性内置了变更通知.当改变源对象依赖属性值之后,绑定目标可以立即得到更新,开发人员不需要手动编写响应事件. 在绑定来源和绑定目标之间,可以使用Mode属性指定绑定的方法.Mode属性是System.Windows.Data.BindMode枚举类型的属性: OneWay:源数据变更目标数据变更,反之不行 OneTime:仅在启动时更新 OneWayToSource:目标数据更新源数据更新,反之不行 T

WPF——数据绑定及属性改变事件

一.首先需要封装一下文本框的属性,并且在实体类中添加一个实体类的属性改变函数 public class User : INotifyPropertyChanged //INotifyPropertyChanged接口是 WPF/Silverlight 开发中非常重要的接口, 它构成了 ViewModel 的基础, 数据绑定基本上都需要这个接口. { private string _Wenben; public string Wenben { get { return _Wenben; } set

wpf 数据绑定2

可以将ItemsControl类控件的依赖项属性ItemsSource作为集合的绑定对象.那么如果集合实现了ObservableCollection<T>这个泛型接口,就能够在集合改变的时候界面也做出响应的改变. ItemsSource = "{Binding}" <--第一种表示方式在父级控件中设置了DataContext属性 !--> ItemsSource = {Binding Source = {StaticResource XXXX}} <--第

WPF数据绑定

一:控件到控件的绑定 1:OneWay Source影响着Target,但是Target却影响不到Source.2:OneWayToSource Target影响Source,而Source却影响不到Target.3:TwoWay Source与Target相互影响.4:OneTime 在OneWay的基础上延伸了一个OneTime,仅绑定一次.如果大家属性Jquery中的one函数我想就可以不用表述了. <Window x:Class="WpfApplication1.Window1&q

WPF 数据绑定,界面刷新的两种方法-----INotifyPropertyChanged

.Netformwork4.0及以下版本 -------INotifyPropertyChanged 命名空间: System.ComponentModel 后台代码 public partial class DvrWnd : UserControl { public DvrWnd() { InitializeComponent(); } private void InitInfo() { for (int i = 0; i < 10; i++) { DvrInfo dvrInfo = new

WPF——数据绑定(二)绑定方法—绑定本地对象

注意:本人初学WPF,文中表达或技术性问题请勿见怪,欢迎指正,谢谢 标记拓展语法:绑定到本地对象 什么是绑定到本地对象,我个人理解就是实现UI层上两个或多个控件的相互关联,一个控件的状态改变,导致另一个控件状态随机改变, 废话不多说,直接贴上代码,代码目的是实现一个TextBox和CheckBox的相互关联,选中CheckBox,则TextBox可用,否则不可用. <!--MainWindow.xaml--> <Window x:Class="Binding_1.MainWin