【问题标题】:How to make a piece of WPF content take up the entire application window如何让一段WPF内容占据整个应用程序窗口
【发布时间】:2010-06-02 12:00:05
【问题描述】:

我正在开发一个包含多个内容区域的应用程序。我想实现一种行为,以便响应用户输入,可以切换这些内容区域中的任何一个以适应整个应用程序窗口,并且可以选择再次返回其原始位置。我尝试了几种方法,但没有一种方法对我来说是最佳的。这是我尝试做的:

  1. 在我想要制作“全屏”的内容上使用 ClipToBoundsProperty:不起作用,因为只有 CanvasPanel 似乎完全尊重此属性。应用程序需要本地化,所以我真的很想避免使用 CanvasPanel。
  2. 使用网格并折叠其他内容区域,这样只有我想看到的内容区域可见,因此占据了整个屏幕:这可能会起作用,但似乎不容易实现或维护。 “全屏”内容区域可能有几个层次,例如位于 Tabcontrol 内,所以我也必须隐藏选项卡标题等。
  3. 在单独的视图中重建内容区域并在隐藏其余部分的同时显示它:使用 DataTemplates 和我的 ViewModel 对象似乎很容易,但使用此方法不会保留任何仅 GUI/视图的状态。
  4. 以某种方式将我想要“全屏”显示的 GUI/视图“提升”到单独的视图中,并在隐藏其余部分的同时显示它:我不知道如何执行此操作,或者即使这是可能的。

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

非常感谢!

【问题讨论】:

    标签: wpf controls fullscreen


    【解决方案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

    【讨论】:

    • 您好,感谢您的回复。我当然可以使用 Popup 控件。但问题是用什么来填充 Popup 控件。如果我只是为其内容属性分配一些现有的内容,框架会抱怨后者已经在逻辑树中,我应该先将其删除。我没有任何手动修改逻辑树的经验,所以我什至不确定这是否是一个好主意。如果我只是简单地再次从我的数据模型对象中实例化内容,那么我会遇到丢失原始内容上的任何 GUI 状态的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多