1. 程式人生 > >WPF combox資料繫結的問題

WPF combox資料繫結的問題

WPF中的Combox繫結表面看起來似乎比winform重的winform繫結更復雜

但是,不容忽視的是wpf中的combox的資料物件繫結繫結的是物件,比如用Messagebox.show(combox.selecteditem),出現的內容是整個物件,可以通過combox.selecteditem as object  來還原成你的物件進行操作。這是一個亮點,注:datagrid也一樣

但是,不管多麼簡單的問題,到了我這裡總會出現這樣那樣的問題。

今天我就遇到一個問題,糾結了好幾個小時,

情況說明:我要對combox的itemsource進行資料繫結,然後還要根據當前頁面上的物件對selectedvale進行繫結,具體程式碼如下

 <ComboBox Name="cmbunitkind" itemssource={bing} DisplayMemberPath="Name" SelectedValuePath="Code"  Width="100px"   SelectedValue="{Binding  Path=Model.Unitkind,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />

現在看沒什麼問題,但是程式執行起來後發現,combox有下拉列表資料,而無法即時更新,也就是我頁面的當前物件改變了,無法更新到combox的選項,或者combox的選項改變了,無法更新到物件

這個問題,也讓我研究了半天,哎 

最後發現,如果將itemssource={bing}去掉就可以了

              然後再後臺CS程式碼中不要用DataContext了,而用  this.cmbunitkind.ItemsSource = _unitkindlist;

總結:wpf中DataContext的用法:1 在前臺頁面上的寫法itemssource={bing}

                                              2 在後臺CS程式碼中用combox.DataContext =list

                                           通常需要即時更新的時候使用

          wpf中的itemsource的用法:後臺CS中用 combox.ItemsSource =list;

                                               通常更容易掌握資料顯示的樣式