WPF基础学习

WPF接触时间不长,作为学习笔记记录下来,以便复习加深理解,其中部分图是书籍截取,文章末尾是参考书籍。

WPF的核心是数据驱动UI,Binding作为最重要的体现之一,理解并使用它将变得相当重要。

Binding是数据的桥梁,数据从哪里来哪里就是Source(源),到哪里去哪里就是Target(目标)。简单来说Source是逻辑层的对象;而Target一般指的是UI层的控件对象。这样的话就实现了数据驱动UI。Binding作为中间的桥梁,他跟我们生活中的桥梁就很相似,可以在桥梁上设置“关卡”,也可以设置“放行方向”,比如只允许单向通行。

1.1Binding是有源与路径的

为了偷懒,直接上资料图,正常情况下我是不会在view层底下写逻辑代码,为什么举这个例子,还是让我们便于理解

我在上面说了源一般是逻辑层的对象,这里创建一个Student对象

WPF基础学习

开始关联

WPF基础学习

目标指的是哪一个控件,这里指的是UI层的名为textBoxName的TextBox控件。

binding里面的数据源是stu(Student对象的一个实例),路径是Path=Name (Student对象里面的一个属性),也就是说,我们将数据源stu中的属性Name与名为textBoxName的TextBox控件的属性Text关联起来了。到此我们就实现了Binding的绑定功能。

这里好像跟我们平常写的不一样,解释如下:

WPF基础学习

由此可见xaml是可以更方便的设置Binding.另外从这也可以看出,Binding也可以让一些UI元素进行关联(这里是TextBox的Text关联了slider的value值),这是将控件作为binding源与binding标记扩展。

1.2Binding是可以控制其方向和更新方式的

Binding控制数据流向的属性是Mode,是 BindingMode枚举。取值为:

-TwoWay 双向绑定,顾名思义就是源改变,目标属性(啥是目标,看1.1))跟着变,反着来也可以

- OneWay 单项绑定,源改变,目标属性变

- OnTime 只要根据源来设置目标,以后都不会变 - OneWayToSource 与OneWay相反

- Default 可以单向或双向,是靠被指定的源或目标是否有get或set来指定的。

-Default一般系统自动适配,比如可编辑的textbox采用双向模式,只读的比如textblock采用单向

我们在使用textBox时,有时候想等鼠标移出Textbox后才让此值进行更新,有时候也可能是在改变文本框值时就更新通知,此时就涉及到数据更新方式。

UpdateSourceTrigger的默认值是Default,其他值有PropertyChanged、LostFocus和Explicit。

PropertyChanged:属性改变立即更新

情景如下:

WPF基础学习

LostFocus:失去焦点才更新

Explicit:手动推送才更新。手动推送这里说一下怎么使用:

情景是在TextBox中输入值后,旁边加个按钮,点击按钮控制更新。

//XAML 
 
  
// C# 代码手动更新
private void btnUpdateSource_Click(object sender, RoutedEventArgs e) 
{ 
  BindingExpression binding = txtWindowTitle.GetBindingExpression(TextBox.TextProperty); 
  binding.UpdateSource();
}

参考书籍:WPF深入浅出

内存不够了,说完这一小部分该清清电脑了。

总结:

Binding是有源与路径的,在一些情况下会简写(后面章节会继续说明),Binding是可以控制数据流向以及更新触发条件。特别是更新触发UpdateSourceTrigger枚举,例如Textbox是默认失去焦点更新,有时候不符合我们的一个期望,所以会拿出来进行设置。不是每个控件都需要拿出来设置,具体场合具体需求具体分析。

基础   WPF
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章