【发布时间】:2012-10-12 15:16:35
【问题描述】:
我是使用 WPF 的新手,我想看看人们在使用 MVVM Light Toolkit 的 WPF 应用程序中跨多个屏幕导航时推荐的最佳做法。作为 WPF 的新手,如果我的术语不正确,请原谅我,因为我不确定正确的术语是“切换视图”、“导航页面”、“更改窗口”还是其他内容(澄清这些术语与WPF 将不胜感激)。
澄清我想要做什么:我有一个应用程序,它有 3 个全屏页面/视图,用户应该能够来回移动。这些视图永远不会同时显示,因此它们最容易与选项卡控件中的选项卡进行比较;除了我不想要标签控件通常附带的标签条。相反,我想以编程方式在页面/视图之间切换。
我在以下堆栈溢出答案中看到了几种不同的方法:
- https://stackoverflow.com/a/6114865/1081879
- How to navigate through windows with MVVM Light for WPF?
所以我真的只是想知道上述哪种方法是我应该前进的方向?我实际上已经实现了第一个答案,但我不确定这样做是否是对数据模板的“滥用”/“黑客”,或者是否应该这样使用框架。
最后,如果其他工具包开箱即用地提供此功能,那么 MVVM Light 可能不是我可以使用的最合适的工具包。任何人都可以阐明这个概念,并推荐一个更合适的工具包吗?
谢谢,
【问题讨论】:
-
这实际上正是 WPF 应该如何工作的 :) 您的应用程序由您创建的对象(ViewModels/Models)组成,并且您使用 DataTemplates 和 UI 对象来告诉 WPF 如何绘制您的应用程序。这与 WinForms 正好相反,在 WinForms 中,您使用 UI 对象构建应用程序,并为它们提供所需的数据。
-
我引用的第二个答案的导航功能是什么?
-
我之前没有使用过该代码,但它似乎是一个完成同样事情的框架。您将一个对象设置为“当前”页面,它使用
ViewModelLocator来定位正确的视图来绘制页面。 -
我明白了,感谢您提供的信息。如果您不介意,还有一个问题:您如何使用您的方法处理过渡效果?
-
我会从视图中处理它们,因为它们是视图特定的函数。我可能会在代码隐藏中附加一些东西来监听变化,并在发生变化时运行一些动画。最简单的方法可能是订阅 ViewModel 的 PropertyChange 事件,尽管我确信还有其他方法可以做到这一点,例如使用消息传递系统。
标签: wpf mvvm-light