整理:WPF中Binding的几种写法

Posted im-victor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整理:WPF中Binding的几种写法相关的知识,希望对你有一定的参考价值。

目的:整理WPF中Bind的写法

 <!--绑定到DataContext-->
        <Button Content="Binding DataTime"/>
 
        <!--绑定到DataContext,并设置绑定模式-->
        <Button x:Name="btn" Content="Binding DataTime,Mode=OneTime"/>
 
        <!--绑定到DataContext,并设置更新模式-->
        <Button Content="Binding DataTime,UpdateSourceTrigger=PropertyChanged"/>
 
        <!--绑定到DataContext,并设置转换模式-->
        <Button Content="Binding DataTime,Converter=StaticResource ConvertResource,ConverterParameter=btn1"/>
 
        <!--绑定到Element中指定属性-->
        <Button Content="Binding ElementName=btn,Path=Content"/>
 
        <!--绑定到相对位置中的自身模式-->
        <Button Content="Binding RelativeSource=RelativeSource Mode=Self,Path=Tag" Tag="MyTag"/>
 
        <!--绑定到相对位置中的父级别查找模式-->
        <Button Content="Binding RelativeSource=RelativeSource Mode=FindAncestor,AncestorType=Window,Path=Content"/>
 
        <!--绑定到相对位置中的父级别查找模式 绑定到指定类型-->
        <Button Content="Binding RelativeSource=RelativeSource Mode=FindAncestor,AncestorType=Window,Path=Content"/>
 
        <!--绑定到相对位置中的父级别查找模式 绑定到指定层级-->
        <Button Content="Binding RelativeSource=RelativeSource Mode=FindAncestor,AncestorLevel=2,Path=Content"/>
 
        <!--绑定到相对位置中的父级别查找模式 绑定到模板内容-->
        <Button Content="Binding RelativeSource=RelativeSource Mode=TemplatedParent,Path=Content"/>

在使用Binding类的时候有4中绑定模式可以选择

BindingMode

 

 TwoWay:

  导致对源属性或目标属性的更改可自动更新对方。此绑定类型适用于可编辑窗体或其他完全交互式 UI 方案。

 

OneWay:

  当绑定源(源)更改时,更新绑定目标(目标)属性。如果要绑定的控件为隐式只读控件,则适用此绑定类型。例如,可以绑定到如股市代号之类的源。或者,可能目标属性没有用于进行更改(例如表的数据绑定背景色)的控件接口。如果不需要监视目标属性的更改,则使用 OneWay 绑定模式可避免 TwoWay 绑定模式的系统开销。

 

OneTime:

  当应用程序启动或数据上下文更改时,更新绑定目标。此绑定类型适用于以下情况:使用当前状态的快照适合使用的或数据状态实际为静态的数据。如果要从源属性初始化具有某个值的目标属性,并且事先不知道数据上下文,则也可以使用此绑定类型。实质上,这是 OneWay 绑定的较简单的形式,它在不更改源值的情况下可提供更好的性能。

 

OneWayToSource :

  当目标属性更改时更新源属性。

 

Default:

  使用绑定目标的默认 Mode 值。每个依赖项属性的默认值都不同。一般情况下,用户可编辑控件属性(例如文本框和复选框的属性)默认为双向绑定,而多数其他属性默认为单向绑定。确定依赖项属性绑定在默认情况下是单向还是双向的编程方法是:使用 GetMetadata 来获取属性的属性元数据,然后检查 BindsTwoWayByDefault 属性的布尔值。

 

使用 Mode 属性指定绑定的方向。以下枚举列表列出了可供绑定更新的选项:

  • 无论是目标属性还是源属性,只要发生了更改,TwoWay 就会更新目标属性或源属性。

  • OneWay 仅当源属性发生更改时更新目标属性。

  • OneTime 仅当应用程序启动时或 DataContext 进行更改时更新目标属性。

  • OneWayToSource 在目标属性更改时更新源属性。

  • Default:使用目标属性的默认 Mode 值。

仍然使用上个文章中的文本框,标签控件,以及滚动条来说明绑定模式不同

1。使用twoway方式绑定以后,如果手动更改textbox的值,此时如果通过按钮事件来查看滚动条的value值,就会发现和textbox是一致

2。oneway方式,就是滚动条改变的时候会改变文本框的显示值,但是文本框更改的时候不会更改滚动条的值

3。onetime方法,会发现文本框的值会是滚动条的初始值。而且不会变化

4。onewaytosource。就是文本框更改的时候会改变源的属性。这个时候其实数据源和数据目标已经颠倒过来了

5。default方式,这个方式完全就是根据控件的属性来设置的。有的属性适合twoway方式,比如交互的UI控件,有点只能oneway方式

以上是关于整理:WPF中Binding的几种写法的主要内容,如果未能解决你的问题,请参考以下文章

数据绑定为Binding指定绑定源的几种方法

WPF中Binding的技巧

wpf中UserControl的几种绑定方式

谈谈垂直分割线的几种写法

WPF中的Data Binding调试指南

Oracle循环的几种写法(GOTO 、FOR 、 WHILE 、LOOP)