在MVVM模型中查看动态加载和绑定命令

时间:2014-10-01 08:56:01

标签: wpf mvvm binding

我有一个主窗口:

<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 我怎么能这样做?

1 个答案:

答案 0 :(得分: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设置为在&#34; View Switching&#34;中查看视图模型。逻辑