2012-11-07 2 views
2

안녕하세요, 저는 ViewModel에 CollectionViewSource 속성이 있습니다.ComboBox를 CollectionViewSource에 바인딩하는 올바른 방법

이 뷰 모델은 콤보 상자에이 방법을 바인딩 :

<ComboBox ItemsSource="{Binding Products.View}" 
SelectedItem="{Binding SelectedEntity.Product}" 
IsSynchronizedWithCurrentItem="True"/> 

잘 작동 기존 SelectedEntity 바인딩.

SelectedEntity에 바인딩하려고하면 목록에서 첫 번째 항목을 표시하려고합니다. 따라서 Products.View.MoveCurrentToFirst()을 사용해 보았지만 첫 번째 항목은 여전히 ​​표시되지 않습니다. 내가 설정 한 경우

그것은 물론 작동 SelectedEntity.Product = Products.View.CurrentItem.

무엇 난 내 코드를 개선하기 위해 할 수 있습니까? 이것은 다소 나쁘게 보입니다 ...

+0

추가 정보가 필요합니다. "제품이 없습니다"- 제품이 null이거나 제품 속성이 없음을 의미합니까? 아니면 둘 중 하나? 어디에서 MoveCurrentToFirst를 호출합니까? CurrentItem에 대한 할당은 어디에서 수행하고 있습니까? – humanitas

+0

제품이 null입니다. 내 ViewModel의 생성자에서 할당을 호출합니다. – TheJoeIaut

+0

CollectionViewSource를 xaml에 정의하고 ViewModel의 컬렉션에 바인딩 한 다음 ItemsControl (ComboBox)의 ItemsSource를 CollectionViewSource에 바인딩 할 수 있습니다. CollectionViewSource는 뷰의 일부입니다. – user1834059

답변

0

WPF의 SelectedItem은 전체 인스턴스를 선택하므로 SelectedItem을 엔터티의 탐색 속성에 바인딩하는 경우 모두 양호합니다. 그러나 SelectedItem을 엔터티의 비 네비게이션 속성에 바인딩하는 경우 문제가 될 수 있습니다.이 경우 비즈니스 요구 사항 인 SelectedValue를 대신 바인딩하는 것이 좋습니다.

필자에게 SelectedItem을 내 엔터티의 탐색 속성에 바인딩하고 SelectedValue를 내 엔터티의 value 속성에 바인딩하는 것이 가장 좋습니다.

이 정보가 도움이되기를 바랍니다.