我有一个主窗口:
<Window>
<Grid>
<Grid x:Name="Container"/>
<local:bottompanel x:Name="BP"/>
</Grid>
</Window>
在应用程序流程中容器的内容发生了变化。每次我加载另一个视图。我有两个问题:
加载这些视图的“正确”方法是什么。 我使用此代码执行此操作:
UIElement uie = new MyView1();
Container.Children.Add(uie);
还有另一种更可接受的方法吗?
我希望底部面板的datacontext是当前加载视图的datacontext 我怎么能这样做?
答案 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;中查看视图模型。逻辑