簡體   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