Binding不止能綁定一個源,它還能綁定多個源,這就是我們這節要講的多路綁定:MultiBinding。
使用多路綁定跟一般的綁定還是有區別的,首先它並不能很好的在標記擴展中使用,另外,使用多路綁定必須為其指定多路轉換器,不指定的話系統不知道怎么處理從這幾個源過來的數據,下面通過一個例子來講解一下:
例子的情景是這樣的,登錄界面有兩個文本框和一個按鈕,只有當兩個文本框有值的時候按鈕才是可用的。
首先定義多路值轉換器:
多路轉換器需要繼承IMultiValueConverter接口,用法跟單值轉換器是一樣的,就不再細說了。
前台Xaml代碼如下:
使用多路綁定,就得寫成屬性元素的形式,指定多路綁定的Converter,並且將更新設置為屬性改變時,這樣才能及時更新到button身上。
將這兩個的Text綁定到Button的IsEnabled屬性上,就能實現上述情景,效果如圖:
只有當兩個文本框都有值的時候登錄按鈕才能使用,至於為什么密碼框不使用PasswordBox控件,那是因為PasswordBox控件的Password屬性不是依賴屬性,Binding只能綁定依賴屬性,在它身上不起作用。
關於依賴屬性,我們下節開講,Binding相關到此結束...