2010-07-26 8 views
0

wpf 응용 프로그램을 만들고 있는데 사용자 인터페이스 개념을 구현하는 데 약간의 어려움이 있습니다.datacontext 외부의 속성에 바인딩

관찰 가능한 ViewModels 컬렉션을 노출하는 MainWindow에 연결된 MasterViewModel이 있습니다. 본질적으로 observable 컬렉션에서 현재 뷰 모델을 전환하는 몇 가지 명령을 작성했으며이 뷰는 이후 해당 뷰를 표시합니다. 그러나 응용 프로그램이 처음로드 될 때 홈 (탐색)보기를 보여주는 모음에 HomeViewModel을 추가합니다. 내가 가지고있는 문제는 내가 묶는 명령이 MasterViewModel에 노출되어 아이템 컨트롤에 '계단식으로'있지 않다는 것입니다. 누구든지 솔루션이나 더 나은 솔루션을 제공 할 수 있습니까? 많은 감사.

System.Windows.Data 오류 : 40 : BindingExpression 경로 오류 :

내가 수신하고있는 오류입니다 'MainWindowViewModel'속성은 '객체' ''HomeViewModel '를 찾을 수 없습니다 (해시 코드 = 5313339) '. BindingExpression : Path = MainWindowViewModel.LoadClientsCommand; DataItem = 'HomeViewModel'(HashCode = 5313339); 대상 요소는 'Button'(Name = ''); 대상 속성이 'Command'(유형 'ICommand')입니다.

답변

2

난 당신이 다음과 같은 방법으로 RelativeSource 통해 MasterViewModel의 DataContext에에 명령에 액세스 할 수 있다고 생각 : 그래

<Button> 
    <Button.Command> 
     <Binding Path="DataContext.MasterViewCommand"> 
      <Binding.RelativeSource> 
       <RelativeSource 
        Mode="FindAncestor" 
        AncestorType="{x:Type MasterViewBaseClass}" 
       /> 
      </Binding.RelativeSource> 
     </Binding> 
    </Button.Command> 
    Click me! 
</Button> 
1

코드 시나리오의 코드 예제를 제공 할 수 있습니까?

  1. 이것은 조쉬 스미스의 MVVM 예 (http://msdn.microsoft.com/en-us/magazine/dd419663.aspx)를 상기시켜줍니다. 거기에서 아이디어를 얻었습니까?
  2. 정확하게 이해한다면 : ItemControl 용 VM을 작성하고 거기에 명령을 입력하면 어떻습니까?
  3. 당신은 RelativeSource 통해 ItemControl에서 명령에 접근을 시도 할 수 있습니다 (How do I use WPF bindings with RelativeSource?)
+0

내 아이디어를 여기에서 적용하려고했지만 유일한 문제는 사용자 컨트롤 외부에서 명령을 가져 오는 것입니다. – aligray