2009-09-30 54 views
1

我正在处理包含多个内容区域的应用程序。我想要实现一种行为,以响应用户输入,可以切换这些内容区域中的任何一个以适应整个应用程序窗口,并且可以选择再次回到其原始位置。我尝试了几种方法,但他们都不适合我。这里就是我试图做的:如何使一块WPF内容占用整个应用程序窗口

  1. 使用ClipToBoundsProperty上我想使“全屏”的内容:不工作,因为只有CanvasPanel似乎完全尊重这个属性。该应用程序需要进行本地化,所以我真的想避免CanvasPanel。
  2. 使用网格并折叠其他内容区域,使得只有我想看到的内容区域可见,因此占据了整个屏幕:这可能会起作用,但实施起来并不容易,但不易维护。 “全屏”内容区域可能有多个级别,例如驻留在Tabcontrol内,因此我必须隐藏标题标题等。
  3. 在单独的视图中重建内容区域,并在隐藏其他视图时显示它:看起来很容易处理DataTemplates和ViewModel对象,但是使用这种方法不保留任何GUI/View唯一状态。
  4. 以某种方式将图形界面/视图“提升”到独立视图并显示它,同时隐藏其余部分:我不知道如何做到这一点,或者即使这是可能的。

无论如何,如果有人知道更好的方法,我很想知道它。

非常感谢!

回答

1

关于您的第四个选项:您可以通过调用“myWindow.Hide()”来隐藏任何窗口,它将保留在内存中,但用户将无法看到它。当你想再次显示时,只需调用“myWindow.Show()”。

或者,您可以尝试使用Popup控件,它将放置在所有其他内容上。请参阅:

http://roecode.wordpress.com/2008/01/07/wpf-popup-control-part-1-the-quick-and-dirty-way/ http://dotnetslackers.com/Community/blogs/bmains/archive/2007/07/26/Introduction-to-WPF-Popups.aspx

+1

感谢您的回复你好。我当然可以使用Popup控件。但问题是用Popup控件填充什么。如果我简单地为其内容属性分配一些现有的内容,框架就会抱怨后者已经在逻辑树中,我应该先删除它。我没有任何手动修改逻辑树的经验,所以我甚至不确定这是否是一个好主意。如果我只是再次从我的数据模型对象实例化内容,那么我会遇到在原始内容上丢失任何GUI状态的问题。 – 2009-09-30 20:45:10

相关问题