[英]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.