這是我會傾向於做的。
使用這種模式創建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}}" />
我有一些問題與靜態資源(不是你的錯,我只是使用部分由RIA服務生成的代碼),但除此之外,它似乎工作! :) 謝謝! – Shaamaan
我還有一個關於這個問題(我希望你會讀到這個)。我已經將兩個'DateTimePicker'控件綁定到'CriteriaService'中的'DateTime'字段。由於其中一個代表「開始日期」,另一個代表「結束日期」,因此我需要確保結束不是比開始的「更早」。使用setter很容易,並且值設置正確,但實際的SL'DateTimePicker'控件仍然顯示舊的選擇。我甚至綁定了'DisplayDate',但它仍然是一樣的。我錯過了什麼? – Shaamaan