天天看點

WPF使用DataGridComboBoxColumn完成綁定

 在使用DataGrid的時候,有時候需要使某些列為ComboBox,這時自然想到使用DataGridComboBoxColumn,但是如果使用的是ItemsSource資料綁定背景的對象,就會發現,這根本就不能用。

  首先,看有問題的代碼:

背景代碼:

前台為:

  在這裡通過把Window控件的Name設定為this,然後在綁定的時候指定ElementName=this及Path屬性來關聯到背景資料源。為了測試是否有效,我還定義了一個TextBox來顯示SelectedList中的資料的值。首先,可以肯定的是,用DataGridTextColumn一點問題也沒有,資料可以正常地顯示和更新,但是使用DataGridComboBoxColumn時問題就出現了,資料不能顯示,就像什麼都沒有綁定上去一樣:

WPF使用DataGridComboBoxColumn完成綁定

  于是,試試DataGridTemplateColumn來做ComboBox:  

  運作發現,顯示是正常了,但是不論我怎麼改,SelectedList中的資料都不帶改變,我嘗試設定了ComboBox的各項屬性,也沒有成功。但是非常奇怪的地方是,如果在選擇後,去點了上面的DataGridComboBoxColumn ,資料就能正常正同步過去:

WPF使用DataGridComboBoxColumn完成綁定

  我想這可能是DataGridComboBoxColumn在選擇後會觸發一個事件,完成同步工作。

  這樣,資料能夠正常地同步了,但是如果不點中對應單元格,ComboBox就不會顯示出來,隻有點中了才顯示,繼續參考資料,問題原因是上面隻設定了EditingElementStyle(編輯時樣式),是以在選中編輯時就會出現ComboBox,要想一直顯示,還得設定ElementStyle,使它和EditingElementStyle一樣就行了:

  

WPF使用DataGridComboBoxColumn完成綁定

  問題圓滿解決,其實也不難,隻是不知道,沒想到而已,大家可以看看。