导航主页与后续视图/页面之间的数据绑定

时间:2011-08-02 11:32:58

标签: silverlight visual-studio-2010 silverlight-4.0

我有一个基础XAML页面,它是导航布局的基础,顶部的按钮在中间打开各种视图。这是使用导航FrameUriMapper完成的。

我在导航面板上放置了一些控件(DatePicker s),因为视图需要它们来过滤掉数据。

但是,我不知道如何将任何类型的数据绑定应用于后续视图,毕竟这些视图是单独的XAML文件。

我需要能够从DataPicker读取值,并且理想情况下,会对用户更改的值做出反应。

我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

这是我倾向于做的事情。

使用此模式创建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}}" />