[英]Two-way binding static DateTime property in Silverlight
我有很多頁面,每個頁面都有自己的ViewModel
,它繼承自BaseViewModel
。
在某些頁面上,有一個DatePicker
控件,該控件的SelectedDate
屬性綁定到BaseViewModel
的ReportDate
屬性。
但是,我被告知,這些頁面上的DatePicker
控件應該使用相同的日期,這意味着如果用戶在導航到頁面2時在頁面1的控件中更改了日期,那么頁面2應該顯示的日期與在同一天。第1頁
我首先想到的是用靜態DateTime
屬性替換ReportDate
,但據我所知,這在Silverlight中是不可能的(困難的?)。
還是有更好的方法呢?
我認為這一點都不困難。 這是一個例子
public class BaseViewModel
{
public DateTime ReportDate
{
get
{
return ClassHelper.StaticDate;
}
set
{
ClassHelper.StaticDate = value;
RaisePropertyChanged("ReportDate")
}
}
}
public static ClassHelper : IPropertyChaged
{
private static object sync = new object();
private static DateTime staticDate;
public static DateTime StaticDate
{
get
{
return staticDate;
}
set
{
lock(sync)
{
staticDate = value;
}
RaisePropertyChanged("StaticDate")
}
}
}
然后在BaseViewModel
訂閱ClassHelper.PropertyChaged
事件,並在處理程序中調用RaisePropertyChaged("ReportDate")
。
不要忘記在BaseViewModel
的dispose方法中取消訂閱該事件
當然,您可能需要改變其他想法,但這是基本思想。
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.