在窗口上放置几个UserControl组件的正确方法



在任何大型应用程序中,我都会遇到以下问题:

我正在建设窗口的外观,我希望它有例如菜单在左边,一些内容在中间等

现在,如果我想重用其中的一些东西(大部分(,或者只是不想把它们都保存在一个xaml文件中,我该怎么做?到目前为止,我经常这样做:

  1. 我为这些组件创建UserControl+ViewModel(通常我需要将主视图拆分为两个或三个组件(
  2. 在主窗口(xaml(中,我输入:

    <DockPanel>
            <ContentControl Content="{Binding Menu}" DockPanel.Dock="Left"/>
            <ContentControl Content="{Binding MainStuff}"/>
    </DockPanel>
    
  3. 在主窗口ViewModel中,我输入:

    Menu = new MenuViewModel();
    MainStuff = new MainStuffViewModel();
    

有时这些VModel必须引用MainViewModel,但很少。

这种方法不是很好,因为我在主窗口xaml编辑器中看不到我的设计(有时我能看到,我不知道,visual可能试图在编译前进行绑定,但有时失败了,我不想考虑:(

什么是亲方法?

您的MenuViewModel是否有相应的MenuView?

在这种情况下,您可以像下面这样替换您的ContentControl:

<DockPanel>
        <prefix:MenuView DataContext="{Binding Menu}" DockPanel.Dock="Left"/>
        <prefix:MainStuffView DataContext="{Binding MainStuff}"/>
</DockPanel>

通过这种方式,您可以获得MenuView和MainStuffView用户控件的设计视图

大型应用程序需要摆脱其单一的形式,以实现可重用、可组合——您正在寻找Prism。为剖面创建区域,并将使用控件转换为视图并注入它们。

最新更新