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

本文关键字:窗口 布局 WPF | 更新日期: 2023-09-27 18:35:07

我对WPF仍然相当陌生,我想知道是否可以将不同的布局应用于不同的窗口,让我解释一下我的方案。

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

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

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

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

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

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

我也喜欢将我的视图保留为控件,所以我通常将它们定义为用户控件,这样我就可以创建动态 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>