目的:整理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中綁定模式能夠選擇性能
BindingModespa
TwoWay:.net
致使對源屬性或目標屬性的更改可自動更新對方。此綁定類型適用於可編輯窗體或其餘徹底交互式 UI 方案。雙向綁定
OneWay:code
當綁定源(源)更改時,更新綁定目標(目標)屬性。若是要綁定的控件爲隱式只讀控件,則適用此綁定類型。例如,能夠綁定到如股市代號之類的源。或者,可能目標屬性沒有用於進行更改(例如表的數據綁定背景色)的控件接口。若是不須要監視目標屬性的更改,則使用 OneWay 綁定模式可避免 TwoWay 綁定模式的系統開銷。blog
OneTime:token
當應用程序啓動或數據上下文更改時,更新綁定目標。此綁定類型適用於如下狀況:使用當前狀態的快照適合使用的或數據狀態實際爲靜態的數據。若是要從源屬性初始化具備某個值的目標屬性,而且事先不知道數據上下文,則也可使用此綁定類型。實質上,這是 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方式