질문 제목을 영어로 적으면 찾기 힘들고, 한국어로 적다보니 말이 좀 이상하네요;;;
하기 구조로 된 JSON 형식을 parsing해서 List가 포함된 Object로 변환해서 XAML에서 2개의 ComboBox
로 Depth2와 그에 따른 Depth3 항목을 보여주려고 합니다.
{
"Depth1": [
{
"Depth2": ["Depth3_1"]
"Depth2": [ "Depth3_1", "Depth3_2", "Depth3_3" ]
}
]
}
현재 구현한 방식은 아래와 같습니다.
- 첫번째 콤보박스에서
Depth2
를 선택하면 codebehind를 통해서 combobox 의ComboBox.DropDownClosed
로 현재의 Depth2 값을 인지 - 이를 delegate 함수를 통해서 VM까지 가져옴
Depth2
에 해당하는Depth3
리스트를 Property에 담아서 XAML에서 보여줌.
<Border Grid.Row="1" Grid.Column="0">
<TextBlock Text="Depth2" />
</Border>
<Border Grid.Row="1"Grid.Column="1">
<ComboBox x:Name="ComboModel1"
Width="150"
Height="20"
ItemsSource="{Binding JSONModel.Depth2}"
SelectedItem="{Binding SelectedFiltering.Depth2}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ProductName}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Border>
<Border Grid.Row="1"Grid.Column="2">
<TextBlock Text="Depth3" />
</Border>
<Border Grid.Row="1"Grid.Column="3">
<ComboBox x:Name="ComboModel4"
Width="150"
Height="20"
ItemsSource="{Binding Depth3}" SelectedItem="{Binding SelectedFiltering.Depth3}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding }" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Border>
하지만 이보다 효율적으로 MVVM에서 순차적으로 선택된 값을 보여주는 콤보박스를 처리하는 방법 있을까요?