Поток данных NavigationWindow - PullRequest
0 голосов
/ 26 января 2011

Я пишу свое первое wpf-приложение.

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

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

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

Ответы [ 2 ]

0 голосов
/ 14 февраля 2011

Night Walker,

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

Я опять не уверен, как вы используете фразу «Путь к данным». Обычно вы создаете страницы либо непосредственно в проекте, либо в спутниковых проектах, а затем ссылаетесь на них с помощью пакетов 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

0 голосов
/ 26 января 2011

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

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

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

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

...