2011-01-26 4 views
0

Сейчас я пишу свое первое приложение wpf.NavigationWindow dataflow

Я хочу использовать NavigationWindow на каждой странице, пользователь делает выбор, и все данные должны быть доступны на следующих страницах, у меня около 6 страниц.

Как я должен отслеживать все данные? через конструктор? или в WPF есть более умный способ.

На последней странице будет много данных по пути от предыдущих страниц.

ответ

0

Я бы напал на это одним из двух способов: Кодовый путь (Легкий, но трудно расширяемый, также будет очень грязным) и способ MVVM (Принимает некоторое обучение, разделяет проблемы, легко расширяется, управления).

В коде с кодами, у меня просто есть элемент управления Tab с заголовками вкладок, которые будут выглядеть так, как вы хотите (вы можете придать им стиль, чтобы выглядеть как угодно, что угодно). В коде для кода вы можете иметь некоторую логику, которая указывает, что X Tab не включен или не отображается до тех пор, пока не будут удовлетворены критерии Y.

Существует лучший способ, но он имеет небольшую часть кривой обучения, шаблона проектирования MVVM. У вас будет 6 объектов страницы, которые на самом деле являются объектами CLR, которые определяют содержимое страницы (например, если это вопросник, ваши объекты страницы будут содержать объекты вопросов и объекты заголовка, например).

У вас может быть несколько видов, вид навигации и просмотр страницы. NavigationView будет привязан к NavigationViewModel, который будет иметь логику, необходимую для изменения страницы. PageView будет привязан к одному из 6 PageViewModels, а DataViewer PageViews DataContext (который обеспечивает эту привязку) может быть изменен на основе логики NavigationViews.

0

Night Walker,

трудно сделать именно то, что вы хотите сделать из вашего объяснения. Во-первых, NavigationWindow - это рамка вашего приложения, я думаю, вы это знаете, но я просто хотел убедиться, что мы поняли, что мы не создаем новые экземпляры NavigationWindow. Я думаю, вы имеете в виду «Страницы». Страницы представляют собой содержимое окна навигации и представляют собой некоторую цель, которую вы хотите отобразить в ContentPresenter, предоставляемой NavigationWindow.

Я снова не уверен, как вы используете фразу «Путь к данным». Как правило, вы создаете страницы либо непосредственно в проекте, либо в проектах спутников, а затем ссылаетесь на них с использованием URI пакета. Пример того, как сконструированы URI Pack, можно найти здесь.

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. 

С уважением,

Дональд Рой Эйри

[email protected]

Смежные вопросы