Связывание данных между главной страницей навигации и последующими представлениями / страницами - PullRequest
1 голос
/ 02 августа 2011

У меня есть базовая страница XAML, которая является основой для разметки навигации, с кнопками вверху, открывающими различные виды в середине.Это делается с помощью навигации Frame и UriMapper.

. Я поместил несколько элементов управления (DatePicker s, если быть точным) на панель навигации, так как они потребуются представлениям дляотфильтровывать данные.

Однако я не знаю, как применить какой-либо вид привязки данных к последующим представлениям, которые, в конце концов, являются отдельными файлами XAML.

Мне нужно бытьвозможность читать значения из DataPicker s и, в идеале, реагировать на значения, изменяемые пользователем.

Как мне поступить так?

1 Ответ

1 голос
/ 02 августа 2011

Вот что я хотел бы сделать.

Создайте класс CriteriaService, используя этот шаблон: -

 public CriteriaService : INotifyPropertyChanged
 {
      private DateTime myStartDate;
      public DateTime StartDate
      {
           get { return myStartDate; }
           set { myStartDate = value; //Notify property changed }
      }

      // Other criteria properties here

      //INotifyPropertyChanged implemenation
 }

Теперь добавьте экземпляр этого сервиса в App.Xaml.cs: ​​-

 <local:CriteriaService x:Key="CritreaService" />

На главной странице вы делаете что-то вроде этого: -

<Grid x:Name="LayoutRoot" DataContext="{StaticResource CriteriaService}">

, чтобы вы могли использовать простые привязки, такие как SelectedDate="{Binding StartDate}", в элементах управления критериями.

Теперь на ваших разных страницах у вас есть выбор.В коде вы можете получить доступ к CriteriaService как: -

CriteriaService criteria = App.Resources["CriteriaServices"] as CriteriaService;

Или, если вы хотите привязать значения из него на своей странице xaml, вы можете использовать что-то вроде: -

 <local:SomeStrangeControl StartDate="{Binding StartDate Source={StaticResource CriteriService}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...