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

Wpf 在窗口上放置几个UserControl组件的正确方法,wpf,user-controls,window,Wpf,User Controls,Window,在任何大型应用程序中,我都会遇到以下问题: 我正在构建窗口外观,我希望它有例如左边的菜单,中间的一些内容等等。 现在,如果我想重用其中的一些东西(大部分),或者我不想把它们都保存在一个xaml文件中,我该怎么做?直到现在我都是这样做的: 我为这些组件创建UserControl+ViewModel(通常我需要将主视图拆分为两个或三个组件) 在主窗口(xaml)中,我放置: 有时,这些VModel必须参照MainViewModel,但很少 这种方法不是很好,因为我无法在主窗口xaml编辑器中看到我

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

我正在构建窗口外观,我希望它有例如左边的菜单,中间的一些内容等等。 现在,如果我想重用其中的一些东西(大部分),或者我不想把它们都保存在一个xaml文件中,我该怎么做?直到现在我都是这样做的:

  • 我为这些组件创建UserControl+ViewModel(通常我需要将主视图拆分为两个或三个组件)
  • 在主窗口(xaml)中,我放置:

  • 有时,这些VModel必须参照MainViewModel,但很少

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


    什么是pro方法?

    大型应用程序需要从单一的形式转变为可重用、可组合的形式—您正在寻找。为分区创建区域,并将使用控件转换为视图并插入它们。

    您的MenuView模型是否有相应的MenuView

    在这种情况下,您可以按如下方式替换ContentControl:

    <DockPanel>
            <prefix:MenuView DataContext="{Binding Menu}" DockPanel.Dock="Left"/>
            <prefix:MainStuffView DataContext="{Binding MainStuff}"/>
    </DockPanel>
    
    
    
    这样,您就可以获得MenuView和MainstruffView用户控件的设计视图

    Menu = new MenuViewModel();
    MainStuff = new MainStuffViewModel();
    
    <DockPanel>
            <prefix:MenuView DataContext="{Binding Menu}" DockPanel.Dock="Left"/>
            <prefix:MainStuffView DataContext="{Binding MainStuff}"/>
    </DockPanel>