2009-05-20 10 views
2

データバインディングとWPFコンボボックスの使用に成功し、親コンボのSelectionChangedイベントがトリガされたときに、コンボボックスの一部をカスケードして子コンボの更新をトリガすることで成功しました。私のコンボはcboCountry、cboCityとcboTownです。WPFカスケードコンボボックス

ただし、親コンボドロップダウンの内容で親が更新をトリガするときに、子コンボで選択した値を空白にしているように見えるため、これは信頼できません。

この問題が発生したことがありましたか(解決済みですか)、誰もこの問題なく正常に動作するコードを持っていますか?

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

これは、ComboBoxのItemsSourceを変更するためです。コードサンプルがなければ、修正方法を教えることはできません。最適なオプションは、子のItemsSourceを変更する必要がないように、親のComboBoxの値に基づいてObservableCollectionをフィルタリングすることです。 ItemsSourceが変更されたときにSelectedValueをリセットすることもできます。

+0

こんにちはブライアン、ご返信ありがとうございます。 ItemsSourceをリスト全体に設定してフィルタリングすることをお勧めします。ここでいくつかのコードスニペットを追加しました。しかし、私はどのようにコンボをフィルタリングするかわからないItemsSourceは、DataViewをフィルタリングせずにDataViewにアタッチされているので、再度問題を引き起こします。任意のアイデアは、データビューに基づいてコンボをフィルタする方法? – Mitch

+0

私はそれを解決したことを心配しないでください。多くの人が私を正しい方向に向けるブライアンに感謝しています。 – Mitch

+0

このフィルタはどのように実現されていますか? – Shimmy