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、代码绑定
1)、数据源属性为依赖属性,WPF元素(控件)间的绑定,属性多为依赖属性;
除了FindAncestor的其他选项:
(1)、Self:数据源即为目标对象本身,可能绑定当前元素的其他属性;
(2)、PreviousData : 多用于列表,表示前一列项;
(3)、TemplatedParent:表示拥有该模板的父类。多用于模板定义。
4)、DataContext
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}"/>
上一篇: HashSet详解:不能重复(对象的哈希代码一样),无序
下一篇: ViewPager