我有多个页面,每个页面都有自己的ViewModel
,它继承自BaseViewModel
。
在某些网页上有一个DatePicker
控件,其中SelectedDate
属性绑定到ReportDate
中的BaseViewModel
属性。
但是,我刚刚被告知这些页面上的DatePicker
控件应该使用相同的日期,这意味着如果用户在第1页的控件中更改了日期,那么当他导航到第2页的第2页时应显示与第1页相同的日期。
我的第一个想法是,用静态ReportDate
属性替换DateTime
,但据我所知,这在Silverlight中是不可能的(难度?)。
或者有更好的方法吗?
答案 0 :(得分:2)
我认为这根本不是很困难。这是一个例子
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
subsicribe到ClassHelper.PropertyChaged
事件和处理程序调用{{1}}中。
不要忘记在RaisePropertyChaged("ReportDate")
当然,您可能需要更改其他想法,但这是基本想法。
希望能帮助你。