2014-10-01 72 views
0

动态结合命令我有一个主窗口:视图加载和在MVVM模型

<Window> 
    <Grid> 
    <Grid x:Name="Container"/> 
    <local:bottompanel x:Name="BP"/> 
    </Grid> 
</Window> 

应用程序流过程中改变容器的内容。每次我加载另一个视图。我有两个问题:

  1. 什么是“正确”的方式来加载这些意见。 我用这个代码来做到这一点:

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

    是否有另一种,要做到这一点更可以接受的方式?

  2. 我希望底部面板的datacontext是当前加载视图的datacontext。
    我该怎么做?

+0

您可以使用数据模板来保存视图并使用datacontext切换视图。 – 2014-10-01 10:59:33

回答

0

如果我正确地理解了你,你可以做些什么这样的事情。

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

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

而在你mainwindow.xaml

<Window> 
<Grid> 
<Grid x:Name="Container"/> 
    <ContentControl Content="{Binding CurrentView}" /> 
</Grid> 

而在你MainviewModel创建属性CurrentView

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

设置CurrentView到approperiate视图模型的“视图切换内“逻辑