2011-08-02 4 views
1

ナビゲーションレイアウトの基本となる基本XAMLページがあり、上部にはさまざまなビューが中央に表示されています。これは、ナビゲーションFrameおよびUriMapperを使用して行われます。ナビゲーションメインページと後続のビュー/ページとの間のデータバインド

ナビゲーションパネルにいくつかのコントロール(正確にはDatePicker)が配置されています。これは、ビューがデータを除外するために必要となるためです。

しかし、どのように後続のビューにどのような種類のデータバインディングを適用するかはわかりません。後者のビューは結局のところ、XAMLファイルを分離しています。

DataPickerから値を読み取ることができ、理想的にはユーザーが変更した値に反応する必要があります。

どうすればいいですか?

答えて

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}"> 

のような単純なバインディングを使用できますあなたの基準コントロールの。

ここでは、さまざまなページに選択肢があります。コードでは、アクセスすることができCriteriaServiceとして: -

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

それとも、あなたのページのXAMLで、それからの値にバインドしたい場合は、のようなものを使用することができます - 私はいくつかの問題を持っていた

<local:SomeStrangeControl StartDate="{Binding StartDate Source={StaticResource CriteriService}}" /> 
+0

を静的リソース(あなたのせいではなく、私はちょうどRIAサービスによって部分的に生成されたコードを使用しています)が、それ以外はうまくいくようです! :)ありがとう! – Shaamaan

+0

私はこれに関するもう1つ質問があります(私はあなたがこれを読むことを望みます)。 2つの 'DateTimePicker'コントロールを' CriteriaService'の 'DateTime'フィールドにバインドしました。 1つは「開始日」を表し、もう1つは「終了日」を表すため、終了が開始より「早い」ことを確認する必要があります。セッターを使用するのは簡単で、値は正しく設定されていますが、実際のSLのDateTimePickerコントロールでは古い選択が表示されます。私は 'DisplayDate'にもバインドしましたが、それはまだ同じです。私は何が欠けていますか? – Shaamaan

関連する問題