欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WPF数据绑定 1

程序员文章站 2022-06-09 15:56:30
...
1、数据绑定:关联数据源(集合、对象、控件等)和目标(一般是界面的控件)。
2、模型:1).目标对象(e g.控件)、2).目标属性(e g.控件属性)、3).数据源对象(e g.类)、4).数据源属性(e g.属性)、5).绑定对象
3、绑定的目标属性一定是依赖属性,但数据源属性可以是普通或者依赖属性(一定是属性,普通字段不行的!)。
4、代码绑定        
        Binding binding = new  Binding("Name");
        binding.Source = class1;
        Controll.SetBinding  (Conroll.DependencyPropertyName,binding);
 或者 BindingOperation.SetBinding(controll,conroll.DependencyPropertyName,binding);

5、数据绑定的方向:1).OneWay:数据源——》目标;2).OneWayToSource:目标——》数据源;3).TwoWay:双向;4). OneTime:一次性的OneWay;5). Default:默认,一般除了TextBox的Text和CheckBox的IsChecked是TwoWay,其他为OneWay。

6.数据源改变时通知目标的机制:
 1)、数据源属性为依赖属性,WPF元素(控件)间的绑定,属性多为依赖属性;

 2)、数据源对象实现I NotifyPropertyChange接口

public event PropertyChangedEventHandler PropertyChanged;

public bool IsEnabled
        {
            get
            {
                return isEnabled;
            }
            set
            {
                if (this.isEnabled != value)
                {
                    this.isEnabled = value;
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IsEnabled"));
                }
            }
        }

7.数据绑定的方式:

1)、Source:{Binding Source={},Path=Name ,UpdateSourceTrigger=LostFocus}

2)、Element:用于元素间绑定{Binding ElementName = controllName, Path =PropertyName}

3)、RelativeSource :数据源相对位置

 <TextBlock Text="{Binding Path=Title,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">
FindAncestor为从目标对象沿着元素树向上查找,直到找到第一个类型为Window的元素,数据源属性为Title。
除了FindAncestor的其他选项:
 (1)、Self:数据源即为目标对象本身,可能绑定当前元素的其他属性;
 (2)、PreviousData : 多用于列表,表示前一列项;
 (3)、TemplatedParent:表示拥有该模板的父类。多用于模板定义。
4)、DataContext

 当多个控件均绑定同一个数据源时,可以在容器元素(如Grid)的DataContext=“{StaticResource object}”,则内部元素<TextBox  Text="{Binding Path  = Name}"/>