2009/7/31

Databinding : Communication between Target and Source

A CodeProject Article

這兩天在網路上到處搜尋有關Databinding的文章,通常找到的東西講的都跟這篇codeproject上的內容一樣。都是講解怎麼樣顯示資料,都沒講到怎麼樣讓這些被顯示的資料可以被使用者變更後記錄起來。

<TextBox Name="Tbx" Text="{Binding Path=Test1}" MouseLeave="Tbx_MouseLeave"></TextBox>

上面這段code,照著文章中的範例可以成功的顯示出,Test1 property在一個class instance中的值。

那要怎麼讓使用者在Textbox中輸入文字後可以改變Test1的值ㄋ?為了找這個答案讓我找的手都長繭,

<TextBox Name="Tbx" Text="{Binding Path=Test1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" MouseLeave="Tbx_MouseLeave"></TextBox>

只要加上紅色的部分就可以讓使用者變更Test1的值,藍色的部分可以不加,因為預設就是這個值,要注意的是這只能接收使用者的修改不能反映程式內的修改,要顯式經由程式修改的值,必須實作 INotifyPropertyChanged才行,就像一開始的文章中所說的。至於如何判斷輸入的東西要如何過濾,我不知道,需要再找。

MSDN中UpdateSourceTrigger的說明可以設定的值

沒有留言:

張貼留言