微信引流推廣平臺(tái)青島百度推廣優(yōu)化怎么做的
續(xù)接上文,本章繼續(xù)講解WPF Binding相關(guān)知識(shí),主要內(nèi)容是綁定的模式和綁定源(Source)
5綁定模式
在使用Binding類的時(shí)候有4中綁定模式可以選擇
BindingMode
TwoWay | 導(dǎo)致對(duì)源屬性或目標(biāo)屬性的更改可自動(dòng)更新對(duì)方。此綁定類型適用于可編輯窗體或其他完全交互式 UI 方案。 |
OneWay | 當(dāng)綁定源(源)更改時(shí),更新綁定目標(biāo)(目標(biāo))屬性。如果要綁定的控件為隱式只讀控件,則適用此綁定類型。例如,可以綁定到如股市代號(hào)之類的源。或者,可能目標(biāo)屬性沒有用于進(jìn)行更改(例如表的數(shù)據(jù)綁定背景色)的控件接口。如果不需要監(jiān)視目標(biāo)屬性的更改,則使用 OneWay 綁定模式可避免 TwoWay 綁定模式的系統(tǒng)開銷。 |
OneTime | 當(dāng)應(yīng)用程序啟動(dòng)或數(shù)據(jù)上下文更改時(shí),更新綁定目標(biāo)。此綁定類型適用于以下情況:使用當(dāng)前狀態(tài)的快照適合使用的或數(shù)據(jù)狀態(tài)實(shí)際為靜態(tài)的數(shù)據(jù)。如果要從源屬性初始化具有某個(gè)值的目標(biāo)屬性,并且事先不知道數(shù)據(jù)上下文,則也可以使用此綁定類型。實(shí)質(zhì)上,這是 OneWay 綁定的較簡(jiǎn)單的形式,它在不更改源值的情況下可提供更好的性能。 |
OneWayToSource | 當(dāng)目標(biāo)屬性更改時(shí)更新源屬性。 |
Default | 使用綁定目標(biāo)的默認(rèn) Mode 值。每個(gè)依賴項(xiàng)屬性的默認(rèn)值都不同。一般情況下,用戶可編輯控件屬性(例如文本框和復(fù)選框的屬性)默認(rèn)為雙向綁定,而多數(shù)其他屬性默認(rèn)為單向綁定。確定依賴項(xiàng)屬性綁定在默認(rèn)情況下是單向還是雙向的編程方法是:使用 GetMetadata 來獲取屬性的屬性元數(shù)據(jù),然后檢查 BindsTwoWayByDefault 屬性的布爾值。 |
6 綁定源(Source)
StaticResource | (1)在資源第一次引用之后無需再修改資源的值。 (2)資源引用不會(huì)基于運(yùn)行時(shí)的行為進(jìn)行重新計(jì)算,比如在重新加載Page/Window的時(shí)候。 (3)當(dāng)需要設(shè)置的屬性不是DependencyObject或Freezable類型的時(shí)候,用StaticResource。 (4)當(dāng)需要將資源編譯到dll中,并打包為程序的一部份,或者希望在各應(yīng)用程序之間共享時(shí),也使用StaticResource。 (5)當(dāng)需要為一個(gè)自定義控件創(chuàng)建一個(gè)Theme,并Theme中使用資源,就需要使用StaticResource。因?yàn)镾taticResource的資源查找行為時(shí)可預(yù)測(cè)的,并且本身包含在Theme中。而對(duì)于DynamicResource,即使資源是定義在Theme中,也只能等到運(yùn)行時(shí)確定,導(dǎo)致一些可能意料不到的情況發(fā)生。 (6)當(dāng)需要使用資源設(shè)置大量的依賴屬性(Dependency Property)的時(shí)候。 由于依賴屬性具有屬性系統(tǒng)提供的值緩存機(jī)制,所以,如果能在程序裝載時(shí)設(shè)置依賴屬性的值,這樣,依賴屬性就不需要檢查自己的值并返回最后的有效值了。 |
DynamicResource | (1)資源的值依賴一些條件,而該條件直到運(yùn)行時(shí)才能確定。 Dynamic resource的限制條件:屬性必須是依賴屬性,或是Freezable的。 |
TemplateBinding? | 當(dāng)應(yīng)用程序啟動(dòng)或數(shù)據(jù)上下文更改時(shí),更新綁定目標(biāo)。此綁定類型適用于以下情況:使用當(dāng)前狀態(tài)的快照適合使用的或數(shù)據(jù)狀態(tài)實(shí)際為靜態(tài)的數(shù)據(jù)。如果要從源屬性初始化具有某個(gè)值的目標(biāo)屬性,并且事先不知道數(shù)據(jù)上下文,則也可以使用此綁定類型。實(shí)質(zhì)上,這是 OneWay 綁定的較簡(jiǎn)單的形式,它在不更改源值的情況下可提供更好的性能。 |
ElementName | 根據(jù)控件名稱直接指定數(shù)據(jù)源。 |
RelativeSource | 當(dāng)一個(gè)Binding有明確的數(shù)據(jù)來源時(shí)可以通過為Source或ElementName賦值的辦法讓Binding與之關(guān)聯(lián),有的時(shí)候由于不能確定Source的對(duì)象叫什么名字,但知道它與作為Binding目標(biāo)的對(duì)象在UI布局上有相對(duì)關(guān)系,比如控件自己關(guān)聯(lián)自己的某個(gè)數(shù)據(jù)、關(guān)聯(lián)自己某級(jí)容器的數(shù)據(jù),就要使用Binding的RelativeSource屬性。RelativeSource屬性的數(shù)據(jù)類型為RelativeSource類,通過這個(gè)類的幾個(gè)靜態(tài)或非靜態(tài)屬性可以控制它搜索相對(duì)數(shù)據(jù)源的方式。 RelativeSourceMode: |
**************************************************************************************************************