2009-05-20 46 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