在窗口上放置少量UserControl组件的正确方法

时间:2011-07-02 13:09:15

标签: wpf user-controls window

在任何大型应用程序中,我都有这个问题:

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

现在,如果我想重用一些这些东西(大部分)或者只是我不想将它全部保存在一个xaml文件中,我该怎么做?直到现在我习惯这样做:

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

    <DockPanel>
            <ContentControl Content="{Binding Menu}" DockPanel.Dock="Left"/>
            <ContentControl Content="{Binding MainStuff}"/>
    </DockPanel>
    
  3. 在主WindowViewModel中我放了:

    Menu = new MenuViewModel();
    MainStuff = new MainStuffViewModel();
    
  4. 有时候那些VModel必须提供给MainViewModel但很少。

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

    这里的专业方法是什么?

2 个答案:

答案 0 :(得分:1)

您的MenuViewModel有相应的MenuView吗?

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

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

通过这种方式,您可以获得MenuView-和MainStuffView-usercontrols的设计视图

答案 1 :(得分:0)

大型应用程序需要摆脱它的整体形式,以便可重用,可组合 - 您正在寻找Prism。为您的部分创建区域,并将您的使用控件转换为视图并注入它们。