2009-05-20 30 views
2

我成功的數據綁定和使用WPF組合框,並通過在父組合框SelectionChanged事件觸發時通過觸發子組合框上的更新級聯一些組合框,取得了一些成功。我的組合是cboCountry,cboCity和cboTown。WPF Cascading ComboBoxes

但是,這是不可靠的,因爲它似乎在父組件觸發子組合下拉內容中的父組件觸發更新時將子組合中的選定值留空。

有沒有人遇到過這種行爲(並解決了這個問題)還是沒有人有沒有這個問題成功的代碼?

Private Sub cboArea_SelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles cboArea.SelectionChanged 
    Dim drv As DataRowView = CType(CType(e.Source, ComboBox).SelectedItem, DataRowView) 
    If Not IsNothing(drv) Then 
     Dim Area As String = drv(0).ToString 
     Dim dv As New DataView(gLookupTown, "ItemGrouping = '" & Area & "'", "ItemValue", DataViewRowState.CurrentRows) 
     cboTown.ItemsSource = dv 
    End If 
End Sub 

回答

1

這是因爲您正在更改組合框的ItemsSource。沒有代碼示例,我無法告訴你如何解決它。最好的選擇是根據父組件的值過濾ObservableCollection,這樣就不需要更改子項ItemsSource。當ItemsSource更改時,您也可以嘗試重置SelectedValue。

+0

嗨,布賴恩,謝謝你的回覆。將ItemsSource設置爲整個列表然後過濾它的好主意,我現在添加了一些代碼片段。然而,我不知道如何篩選組合多數民衆贊成ItemsSource已附加到DataView沒有篩選DataView並再次附加,從而導致再次出現問題。任何想法如何過濾基於DataView的組合? – Mitch 2009-05-21 10:41:13