1

ViewModel多数のページがあり、各ページにはから継承する独自のページがありますBaseViewModel

一部のページでは、どのプロパティが のプロパティにバインドされているかDatePickerを制御できます。SelectedDateReportDateBaseViewModel

ただし、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ハンドラー Call でRaisePropertyChaged("ReportDate")

dispose メソッドでイベントのサブスクライブを解除することを忘れないでくださいBaseViewModel

もちろん、他の考え方を変更する必要があるかもしれませんが、これが基本的なアイデアです。

それがあなたを助けることを願っています。

于 2013-07-23T08:08:24.807 に答える