【问题标题】:Rotating windows in WPFWPF中的旋转窗口
【发布时间】:2010-10-22 05:48:32
【问题描述】:

我需要创建一个最大化并在大约 10 个不同屏幕之间旋转的 WPF 应用程序。每个屏幕将占据整个区域并显示不同的内容。

我已经知道如何使用

最大化窗口

我的问题是什么最好放在那个窗口中以实现我想要的?

理想情况下,我可以拥有 10 个不同的 .xaml 文件,我只需一个接一个地加载即可占据整个屏幕。我不确定在 WPF 中实现这一目标的最佳方法。

谢谢!

【问题讨论】:

  • 请编辑:一定要突出显示您的代码,然后按“代码”按钮。它没有出现。

标签: wpf xaml


【解决方案1】:

一种快速的方法是使用 WPF 的内置页面导航。通过使您的根窗口成为 NavigationWindow 并且每个视图都是从 Page 派生的类(类似于使用 UserControl 或 Window),您只需将 NavigationWindow.Source 设置为指向您要显示的页面的相对 URI(如Web 浏览器),然后根据需要简单地切换它。

【讨论】:

【解决方案2】:

这听起来像是一个经典的 MVVM 应用程序,在此不再赘述。 Google MVVM 或 Model-View-ViewModel,或拿起 Josh Smith(被广泛认为是此类事情的专家)的书 Advanced MVVM

但是,这基本上就是您将要拥有的:

  • ViewModel 类是您需要绑定到的数据的抽象
  • 您的数据模型
  • 您要显示的每件事的视图。视图只是保存您的 UI 的东西,无论是 DataTemplate 还是 UserControl。每个 View 都绑定到 ViewModel

视图是会“旋转”的东西(尽管 WPF 中的旋转意味着动画和/或变换)。您如何在它们之间切换取决于您,尽管这听起来几乎就像是通过 DispatcherTimer 和动画来完成的(即,就像幻灯片中图片之间的淡入淡出)。

这个问题对于这个论坛来说实在是太宽泛了——在继续之前,您需要对 WPF 基础知识进行大量研究。同样,MVVM 是一个很好的起点。

编辑:根据 OP 请求,有些低俗
这可能就像您可以做到的那样简单(并且仍然为每个内容创建单独的 XAML 文件):

首先,为您要显示的内容创建 10 个用户控件(XAML 文件)。

接下来,将每个用户控件的实例添加到您的主窗口。将这些中的每一个的可见性设置为折叠,但要显示的第一个除外。

在主窗口上放置一个“下一步”按钮。

在代码隐藏中,处理 Next 按钮的 Click 事件。在那里,按名称跟踪哪个 UserControl 是可见的。将当前可见的设置为 Visibility.Collapsed,将下一个应该可见的设置为 Visibility.Visible。

这当然是一个丑陋的解决方案,而且不是很 WPF-ish,但它可以完成工作。

【讨论】:

  • 感谢您的想法 - 我希望得到更粗俗的答案。
  • 例如 - “只需创建 10 个 zaml 文件,然后使用 Application.Source = new Uri() 在它们之间切换”或类似的东西。这是一个 1 小时的快速应用程序,我更喜欢一种超级简单的方法——我只是不太了解 WPF。谢谢!
  • 信不信由你,答案基本上就是这样。
  • 我会用“更粗俗”的东西来更新答案,但我仍然无法提供所有的实施细节。
  • 感谢您的帮助。约翰鲍文的回答提供了一个非常快速和简单的解决方案......很抱歉在这里“低俗”,但在这种情况下正在寻找最简单的方法。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
  • 1970-01-01
相关资源
最近更新 更多