2017-10-27 1 views
0

내 View (V)는 ViewModel (VM)에 바인딩됩니다. V에는 ListView에 표시되는 개체 목록이 있습니다. ItemTemplate을 사용하는 ListView에서 각 항목은 항목의 이름을 가진 Label과 항목의 다른 속성으로 설정된 SelectedItem이있는 Combobox로 표시됩니다. 콤보 박스는 또한 메인 V의 VM의 일부인 List에 바인딩됩니다 (Binding의 ElementName = ListBox.DataContext를 사용하여 바인딩합니다 ...)
지금까지 모든 것이 잘 작동합니다. 문제는 콤보 박스에 많은 항목이 포함될 수 있으며 그룹화 또는 필터링을 사용하고 싶습니다. ListCollectionView를 사용하여 필터링 및 그룹화하는 방법을 알고 있습니다. 그러나 ListView의 각 항목에 대해 여러 번 사용되므로 List를 ListCollectionView로 간단히 변경할 수는 없습니다. 하나의 ListCollectionView는 여러 번 사용할 수는 없지만 각각의 용도에 대해 다른 SelectedItem을가집니다.
ListView의 콤보 상자에서 그룹화를 사용하는 쉬운 방법을 찾고 있습니다. ItemTemplate (DataTemplate) 내의 XAML에서 ListCollectionView를 직접 정의하는 방법이 있습니까? 또한 ListCollectionView로 개체 목록을 변환하는 ItemsSource 바인딩에서 (비공유) 변환기를 사용하는 것에 대해 생각했습니다 (단 하나의 바인딩 만 사용하면 변환기는 한 번만 호출됩니다.)? 나는 또한 각 객체를 자체 ViewModel의 VM에있는 List에 넣을 수 있으며 각각의 객체는 ComboBox에 대한 자체 ListCollectionView를 제공하지만 가장 복잡한 솔루션 인 것으로 보인다 (그러나 아마도 가장 깨끗한 것 같습니다)
기타 제안이나 조언?ItemTemplate with Combobox, ListCollectionView

+1

'Selector.IsSynchronizedWithCurrentItem = "False"는 어떻게됩니까? – grek40

+0

고마워요,이 트릭을 했어! 답변으로 의견을 게시하는 경우 허용 된 답변으로 신고 할 수 있습니다. –

답변

1

선택한 항목을 동기화하지 않고 여러 combobox (또는 다른 선택자)에서 동일한 ICollectionView을 사용하려면 각 combobox에 명시 적으로 IsSynchronizedWithCurrentItem="False"을 설정해야합니다.

관련 문제