WPF可以交换面板(DockPanel,StackPanel)吗?

时间:2011-06-09 15:24:11

标签: c# visual-studio-2010 c#-4.0 stackpanel dockpanel

我想创建两种不同类型的DockPanel。如果用户点击一个链接,它会加载DockPanel#1,否则它会加载#2。

我们可以动态交换它们吗?我是WPF的新手。在REALBasic中,我使用GroupPanels,如果需要我会交换它们。

由于

2 个答案:

答案 0 :(得分:2)

您可以动态创建控件并使用其他控件填充其内容。或者你可以放置两种类型并隐藏一个你不想显示的类型。

答案 1 :(得分:1)

看看Josh Smith's MVVM Article in MSDN Magazine。 Josh被许多人认为是MVVM Guru,本文在解释基础知识方面做得很好。

考虑到这一点,我可能会将您的应用程序作为MVVM应用程序。

模型将“只是”成为您的数据模型(与MVC非常相似)。

接下来,每个面板都会有一个View。每个View都可以设置为DataTemplate(如文章中所示),也可以设置为UserControl(就像我已经完成并看到过许多其他地方一样)。这样做使其模块化,更易于扩展,维护等。

您的MainWindow实际上也被视为一个视图,您可以在其上放置其他视图。

所有视图都将由一个或多个ViewModel类控制。你有多少取决于你的设计。通常,如果有不同的功能,您将在View和ViewModel之间建立一个或多或少的一对一关系(尽管您当然可以与一个ViewModel共享多个视图)。通常还会有一个“Main ViewModel”类来保存所有内容。

一般而言,鉴于您的问题的一般描述,您的ViewModel可能包含一个命令(或命令),在您的用户选择链接时处理。此命令可能会设置一些属性,这将控制显示哪个View(通常通过绑定)。

抱歉,我不能比这更详细,但如果我这样做,我需要了解更多关于你的设计,我必须写更多东西,这在这个论坛中并不合适