在WPF中旋转窗口

时间:2010-10-21 20:26:31

标签: wpf xaml

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

我已经知道如何使用

最大化窗口

我的问题是什么最好放在窗口内以达到我想要的效果?

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

谢谢!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

这听起来像是一个经典的MVVM应用程序,这在这里太详细了。谷歌MVVM或模型 - 视图 - ViewModel,或者拿起Josh Smith的书Advanced MVVM(被广泛认为是这方面的专家)。

然而,这基本上就是你将要拥有的:

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

视图是“旋转”的东西(尽管在WPF中旋转意味着动画和/或变换)。你如何在它们之间切换取决于你,虽然它听起来几乎就像使用DispatcherTimer和动画(即幻灯片中的图片之间的淡入淡出)一样。

这个问题对于这个论坛来说实在太宽泛了 - 在继续之前,你需要对WPF基础知识做一些研究。同样,MVVM是一个很好的开始方向。

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

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

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

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

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

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