標籤:使用 os 資料 io 代碼 re
純理論,可能會枯燥。
.net 技術群: 199281001 ,歡迎加入。
1.目標對象一定是派生自DependencyObject的對象,並且目標屬性必須是相依性屬性,否則資料繫結操作將會失 敗。繫結來源對象可以不是依賴對象和相依性屬性。
2.定義了相依性屬性時,FrameworkPropertyMetadataOptions.NotDataBindable 標誌會影響相依性屬性的綁定。當改變來源物件相依性屬性值後,繫結目標可以立即得以更新,開發人員不需要響應事件來手動編寫響應代碼。
3.移除綁定:開發人員可以通過BindingOperations類的兩個靜態方法移除綁定。
<1> ClearAllBindings():從指定的DependencyObject 中移除所有的綁定。
<2>ClearBinding(): 擷取一個相依性屬性作為參數。如果該屬性存在綁定,則移除綁定。
這兩個方法的適用樣本如下。
BindingOperations.ClearAllBindings(nameTextBox,TextBox.TextProperty);
BindingOperations.ClearBinding(nameTextBox);
ClearAllBindings()和ClearBinding() 都是派生自DependentyObject類的ClearValue()方法來移除屬性的本地值。
4.綁定方向
<1>OneWay :當源屬性發生更改時更新目標屬性。
<2>TwoWay :當源屬性發生更改時更新新目標屬性,當目標屬性發生更改時,同時也更改源屬性。
<3>OneTime :僅當應用程式啟動時或DataContext變更時更新目標屬性。
<4>OneWayToSource :在目標屬性更改時更新源屬性。
<5>Default :使用目標屬性的預設Mode 值。
5.綁定更新
<1>Default :繫結目標屬性的預設UpdateSourceTrigger值。 多數依賴項屬性的預設值為PropertyChanged,而Text屬性的預設值為 LostFocus()。
<2>PropertyChanged :當綁定的目標屬性更改時,立即更新繫結來源。
<3>LostFocus() :當繫結目標元素失去焦點時,更新繫結來源。
<4>Explicit :僅在調用UpdateSource()方法時更新繫結來源。
6.綁定到非元素的對象
<1>Source :指向來源物件的引用,也即提供資料對象的引用。
<2>RelativeSource :指向當前元素自身的對象。允許為目標對象指定一個相對於來源物件的目標對象。這不太好理解。
RelativeSource Mode屬性
<2.1>PreviousData :允許綁定所顯示的資料項目列表中以前的資料項目(不是包含資料項目的控制項)。
<2.2>TemplatedParent :引用應用模板(其中有綁定資料的元素)的元素。
<2.3>Self :引用使用者對其設定綁定的元素。
<2.4>FindAncestor :引用資料繫結元素父鏈中的上級。
<3>DataContext :如果沒有指定Source或者RelativeSource屬性,WPF將從當前元素開始向上搜尋元素樹。檢查每個元素的DataContext屬性,並且會使用最先找到的DataContext,也即DataContext屬性不為null的資料內容,DataContext可以綁定很多屬性。