1

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

在某些页面上,可以DatePicker控制哪个SelectedDate属性绑定ReportDateBaseViewModel.

但是,我刚刚被告知DatePicker这些页面上的控件应该使用相同的日期,这意味着如果用户更改第 1 页上控件中的日期,当他导航到第 2 页时,第 2 页应该显示与页面上相同的日期1.

我的第一个想法是,ReportDate用静态DateTime属性替换 ,但据我所知,这在 Silverlight 中是不可能的(很难?)。

或者有没有更好的方法来做到这一点?

4

1 回答 1

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订阅ClassHelper.PropertyChaged事件和处理程序 CallRaisePropertyChaged("ReportDate")中。

不要忘记在 dispose 方法中取消订阅事件BaseViewModel

当然,您可能需要改变其他想法,但这是基本理念。

希望对您有所帮助。

于 2013-07-23T08:08:24.807 回答