論道Windows Phone(五) 通過附加屬性和行為擴充控制項

來源:互聯網
上載者:User

最近和朋友合作一個應用,開發的時候遇到兩個問題,第一個是ListBox控制項的多選問題,第二個是PhotoChooserTask選取器和Image控制項 的配合問題。巧合的是,近日有讀者在我的部落格裡提到他也遇到第二個問題,因此,我想在這篇文章裡分享一下如何使用附加屬性和 Expression Blend行為解決這兩個問題。

如何綁定ListBox控制項的SelectedItems屬性?

當我們把SelectionMode屬性的值設為 Multiple時,ListBox控制項就能支援多選了,如圖1所示,此時,我們可以通過ListBox控制項的SelectedItems屬性擷取選中的項。接下來,我很 自然就會想到把ListBox控制項的ItemsSource和SelectedItems兩個屬性分別綁到視圖模型的對應屬性,但是,SelectedItems屬性不是相依性屬性 ,無法進行資料繫結,怎麼辦?

圖 1

既然內建的SelectedItems屬性不支援資料繫結,我們就自己建立一個支援資料繫結的吧。在Silverlight裡,我們可以 通過附加屬性擴充依賴對象,比如說,我們可以在ListBox控制項上設定Grid.Row附加屬性,如代碼1所示。

代碼 1

Grid.Row附加屬性不 是ListBox控制項的屬性,卻被用來附加額外的資料。在ListBox控制項上設定Grid.Row附加屬性本身不會產生什麼效果,但是,當我們把這個 ListBox控制項放在一個Grid裡時,這個Grid將會根據Grid.Row附加屬性的值安排ListBox控制項的位置,這是附加屬性的常見用途。

回到 我們的問題,我希望建立一個SelectedItems附加屬性,作為內建的SelectedItems屬性和視圖模型對應的屬性之間的橋樑,如代碼2所示。當 我們把SelectedItems附加屬性綁到視圖模型的對應屬性時,前者會把後者的資料添加到內建的SelectedItems屬性。當使用者在使用者介面上更改 選中的項時,SelectedItems附加屬性會把資料更新回視圖模型的對應屬性。

代碼 2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: