Binding(五):多路繫結

Charles_Su發表於2021-07-09

    Binding不止能繫結一個源,它還能繫結多個源,這就是我們這節要講的多路繫結:MultiBinding。

    

    使用多路繫結跟一般的繫結還是有區別的,首先它並不能很好的在標記擴充套件中使用,另外,使用多路繫結必須為其指定多路轉換器,不指定的話系統不知道怎麼處理從這幾個源過來的資料,下面通過一個例子來講解一下:

    例子的情景是這樣的,登入介面有兩個文字框和一個按鈕,只有當兩個文字框有值的時候按鈕才是可用的。

    首先定義多路值轉換器:

    多路轉換器需要繼承IMultiValueConverter介面,用法跟單值轉換器是一樣的,就不再細說了。

    前臺Xaml程式碼如下:

    使用多路繫結,就得寫成屬性元素的形式,指定多路繫結的Converter,並且將更新設定為屬性改變時,這樣才能及時更新到button身上。

    將這兩個的Text繫結到Button的IsEnabled屬性上,就能實現上述情景,效果如圖:

 

 

 

 

    只有當兩個文字框都有值的時候登入按鈕才能使用,至於為什麼密碼框不使用PasswordBox控制元件,那是因為PasswordBox控制元件的Password屬性不是依賴屬性,Binding只能繫結依賴屬性,在它身上不起作用。

   關於依賴屬性,我們下節開講,Binding相關到此結束...

 

 

相關文章