2014-10-01 3 views
0

동적 명령에 바인딩 나는 메인 창을 가지고있다. 매번 다른 뷰를로드합니다. 두 가지 질문이 있습니다.보기로드 및 MVVM 모델

  1. 이러한보기를로드하는 올바른 방법은 무엇입니까?

    UIElement uie = new MyView1(); 
    Container.Children.Add(uie); 
    

    이 작업을 수행하는 또 다른, 더 허용 방법이 있나요 : 나는이 작업을 수행하려면이 코드를 사용?

  2. 하단 패널의 datacontext가 현재로드 된보기의 datacontext가되기를 원합니다.
    어떻게하면됩니까?

+0

datatemplate을 사용하여 뷰를 유지하고 datacontext를 사용하여 뷰를 전환 할 수 있습니다. –

답변

0

필자가 당신을 당황스럽게 이해한다면, 이와 비슷한 것을 할 수 있습니다.

<DataTemplate DataType="{x:Type vm:vm1}"> 
view one 
</DataTemplate> 

<DataTemplate DataType="{x:Type vm:vm2}"> 
view Two 
</DataTemplate> 

그리고 당신의 mainwindow.xaml에

그리고 당신의 MainviewModel에

<Window> 
<Grid> 
<Grid x:Name="Container"/> 
    <ContentControl Content="{Binding CurrentView}" /> 
</Grid> 
은 "보기 전환 내부의 ViewModel approperiate하는 CurrentView을 설정

private ViewModelBase currentview; 
    public ViewModelBase CurrentView 
    { 
     get 
     { 
      return currentview; 
     } 
     set 
     { 
      if (currentview != value) 
      { 
       currentview = value; 
       RaisePropertyChanged("CurrentView"); 
      } 
     } 
    } 

속성 CurrentView를 만들 "논리