繁体   English   中英

Silverlight中的双向绑定静态DateTime属性

[英]Two-way binding static DateTime property in Silverlight

我有很多页面,每个页面都有自己的ViewModel ,它继承自BaseViewModel

在某些页面上,有一个DatePicker控件,该控件的SelectedDate属性绑定到BaseViewModelReportDate属性。

但是,我被告知,这些页面上的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM