Cascading Comboboxes WPF mvvm and EF

277 Views Asked by At

I'm trying to create cascading comboboxes on my view. I have a table, imported from sql with ADO.NET Entity Data Model:

Partial Public Class tbl_Activities
Public Property MRU As String
Public Property Market As String
Public Property Tower As String
Public Property FirstActivity As String
Public Property SecondActivity As String

First combobox should contain FirstActivity items and the second one SecondActivity items related to the first one.

I'm using method to populate the first one:

    Public Sub FillFirstActivity()
    Using context As New TimerConn
        Dim result = (From act In context.tbl_Activities Where (act.MRU = MRU() And act.Market = MAR() And act.Tower = TOW()) Order By act.FirstActivity).Distinct().ToList()
            For Each act In result
                _First.Add(act)
            Next
    End Using
End Sub

Properties:

    Public Property First() As ObservableCollection(Of tbl_Activities)
    Get
        Return _First
    End Get
    Set(value As ObservableCollection(Of tbl_Activities))
        _First = value
    End Set
End Property

Public Property Second() As ObservableCollection(Of tbl_Activities)
    Get
        Return _Second
    End Get
    Set(value As ObservableCollection(Of tbl_Activities))
        _Second = value
    End Set
End Property

Public Property SelectedFirst() As tbl_Activities
    Get
        Return _selectedFirst
    End Get
    Set(value As tbl_Activities)
        _selectedFirst = value
        Me.Second.Clear()
        Me.Second.Add(_selectedFirst)
    End Set
End Property

XAML:

<ComboBox ItemsSource="{Binding EmployeeViewM.First}" SelectedIndex="{Binding EmployeeViewM.SelectedFirst}" DisplayMemberPath="FirstActivity"/>
<ComboBox ItemsSource="{Binding EmployeeViewM.Second}" DisplayMemberPath="SecondActivity"/>

My problem

I'm not able to populate it correctly. In the first combobox I have doubles (Test1, Test2, Test2), and in the second combobox I get only item related to the item chosen from the first combobox: enter image description here

First one should be distinct and the second one with all items for the current activity.

First Combobox = 'Test1', 'Test2'

Second Combobox = If 'Test1' then 'Test1Add', If 'Test2' then 'Test2Add', 'Test2Add1'

I don't know what I'm doing wrong here. Maybe I should split it into Two tables with PK - FK and then try? If so, how can I bind it to the comboboxes?

My Table view:

enter image description here

Thank you very much for any suggestion.

0

There are 0 best solutions below