每个窗口的WPF不同的窗口布局

时间:2016-02-17 17:10:10

标签: c# wpf xaml mvvm caliburn.micro

我仍然是WPF的新手,我想知道是否可以将不同的布局应用于不同的窗口,让我解释一下我的场景。

我有一个使用MVVM和Caliburn Micro的WPF应用程序,我在我的主应用程序中有一个ShellView(Window)和ShellViewModel(Conductor),它在启动时启动,具有特定的布局。我想要实现的是能够打开一个用于应用程序管理的新窗口,因此将调用视图,例如AdminShellView(Window)和AdminShellViewModel(Conductor)。

现在,当我运行我的应用程序并使用IWindowManager打开AdminShellViewModel时,它将使用与ShellView相同的布局加载。

如何才能对这两个窗口应用不同的布局和设计?

2 个答案:

答案 0 :(得分:0)

我自己没有使用过Caliburn Micro,但我相信你应该可以通过在主窗口(Admin和nonAdmin)中加载不同的控件来实现这一点 - 在你的情况下是ShellView。然后,您可以将每个控件绑定到每个自己的视图模型或ShellViewModel,无论哪个更方便。

答案 1 :(得分:0)

一种方法是在窗口中使用ContentPresenter,然后为其定义资源。

我还希望将我的视图保持为控件,因此我通常将它们定义为UserControl,这样我就可以创建动态UI而无需继续创建新窗口。只需根据视图模型替换内容。

<ContentPresenter x:Name="mainContent">
    <ContentPresenter.Resources>
        <DataTemplate DataType="{x:Type vm:AdminShellViewModel}">
            <views:AdminShellView />
        </DataTemplate>
        <!-- We can also define more -->
        <DataTemplate DataType="{x:Type vm:ShellViewModel}">
            <views:ShellView />
        </DataTemplate>
    </ContentPresenter.Resources>
</ContentPresenter>