我现在正在编写我的第一个wpf应用程序。
我想在每个页面上使用用户选择的NavigationWindow,所有的数据都应该在下一页可用,我有大约6页。
我应该如何传递所有的数据?通过构造函数?或者在WPF中有一些更聪明的方法。
在最后一页上,将有许多数据路径从前几页。
发布于 2011-01-27 03:24:59
我会从两种方式中的一种来解决这个问题:代码隐藏方式(很容易,但很难扩展,也会变得非常混乱),以及MVVM方式(需要一些学习,分离关注点,易于扩展,管理)。
在代码隐藏的方式中,我只需要一个Tab控件,其中的选项卡标题按照您希望的方式设置样式(您可以设置它们的样式,使其看起来像您想要的任何样式)。在代码隐藏中,您可能会有一些逻辑,指定在满足Y条件之前,X Tab不可用或不可见。
有一种更好的方法,但它有一点学习曲线,MVVM设计模式。您将有6个页面对象,它们实际上只是定义页面内容的CLR对象(例如,如果是一个调查问卷,您的页面对象将包含问题对象和标题对象)。
您可以有几个视图,一个导航视图和一个页面视图。NavigationView将被绑定到一个NavigationViewModel,该The将具有更改页面所需的逻辑。PageView将绑定到6个PageViewModels中的一个,并且PageViews DataContext (提供该绑定)可以基于NavigationViews逻辑进行更改。
发布于 2011-02-14 05:18:30
夜行者
从你的解释中很难确切地知道你想做什么。首先,NavigationWindow是您的应用程序的框架,我想您知道这一点,但我只想确保我们了解,我们不是在创建NavigationWindow的新实例。我想你指的是“页面”。页面是导航窗口的内容,表示您希望在NavigationWindow提供的ContentPresenter中显示的一些目标。
我再一次不确定你是如何使用“数据路径”这个短语的。通常,您可以直接在项目中或在附属项目中创建页面,然后使用Pack URI引用它们。可以在这里找到一个如何构造Pack URI的示例。
http://msdn.microsoft.com/en-us/library/aa970069(v=vs.85).aspx
然后,您可以使用如下表达式导航到包URL:
this.Navigate(new Uri("pack://application:,,,/MyAssembly;component/MyPage.xaml", UriKind.Absolute);如果您不想涉及导航框架的所有细节,而只想为您的用户专注于应用程序,您可以查看我组装的NavigationControl的专业版本:
http://www.teraque.com/products/explorer-chrome-suite/
There's an free demo you can download. If this is was you are looking to do I can give you pointers if you don't want to purchase the package directly.由衷地,
唐纳德·罗伊·艾瑞
donald.roy.airey@teraque.com
https://stackoverflow.com/questions/4808862
复制相似问题