整理: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方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM