在任何大型应用程序中,我都会遇到以下问题:
我正在建设窗口的外观,我希望它有例如菜单在左边,一些内容在中间等
现在,如果我想重用其中的一些东西(大部分(,或者只是不想把它们都保存在一个xaml文件中,我该怎么做?到目前为止,我经常这样做:
- 我为这些组件创建UserControl+ViewModel(通常我需要将主视图拆分为两个或三个组件(
-
在主窗口(xaml(中,我输入:
<DockPanel> <ContentControl Content="{Binding Menu}" DockPanel.Dock="Left"/> <ContentControl Content="{Binding MainStuff}"/> </DockPanel>
-
在主窗口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。为剖面创建区域,并将使用控件转换为视图并注入它们。