2010-07-20 7 views
0

MVVM 모델을 처음 접했으므로 몇 가지 조언을 원합니다. 현재 사용중인 솔루션이 제대로 작동하지 않는 것 같습니다.XAML에서 ViewModel에 바인딩

설명 : 고객의 관찰 가능 콜렉션이 포함 된 Viewmodel이 있습니다. "뒤로"및 "전달"버튼이있는 격자에이를 표시합니다. 그리드 datacontext는 내 viewmodel의 속성 인 SelectedCustomer로 설정됩니다.

지금까지 너무 좋아

...

그러나, 고객 데이터베이스의 statusrow의 정수인 statusfield을 보유하고 있습니다. 내 viewmodel에서이 목록 (observablecollection) 채 웁니다 있지만 CustomerGrid에 콤보 상자를 채울 때 표시되는 데이터가 없습니다. 그리드의 Datacontext는 SelectedCustomer 속성이고 상태 목록은 루트 viewmodel에 있기 때문에 이것이라고 생각합니다.

질문은 이것입니다. 어떻게 내 콤보 상자가 customergrid 내에서 상태 목록에 액세스 할 수 있습니까? 아니면이 상황을 어떻게 해결해야합니까?

답변

0
{Binding DataContext.ListOfStatus, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TypeOfParentControl}}} 

당신은 어떤 그리드가 너무 콤보 컬럼의 결합을 허용하는 부모의 데이터 컨텍스트

+0

좋아, 그래서 작업을해야 다음을 사용하여, 내 그리드는 StackPanel의에, 논리적 충분히 소리 : <콤보 상자 ItemsSource = "{DataContext.StatusGroups 바인딩, RelativeSource = {RelativeSource FindAncestor, AncestorType = {X : 유형 StackPanel에} }} "DisplayMemberPath ="StatusName "Grid.Column ="1 "Grid.Row ="6 "/> 그러나 콤보 박스는 여전히 비어 있습니다. 아이디어가 있으십니까? –

+0

문제는 XAML에서 내 viewModel에 대한 참조를 설정하지 않았지만 내 App.xaml에서 참조를 설정했기 때문입니다. 내 viewmodel을 staticresource로 선언했을 때 효과가있었습니다. –

0

에 바인딩 할 수 있습니다. 그리드에 따라 달라집니다. WPF 또는 Silverlight에서 그리드를 사용하지 않았으므로 힌트로 사용하십시오.

관련 문제