架空のカレンダーを使用したい MVVM を使用して WPF でプロジェクトに取り組んでいます。1 年の長さを 100 日にして、月ではなく 2 つの季節に分けたいと思います。私が知る限り、これをDateTime
行うことはできず、自分で実装するのに問題があります (主に、私のアプローチは理想からはほど遠いと思います)。これを機能させるのに役立つアドバイスをいただければ幸いです。
public enum Season { Dry, Rainy }
public class Date : ObservableObject
{
#region Members
private int _year;
private int _dayOfYear;
private Season _season;
private string _displayDate;
#endregion
#region Properties
public int Year
{
get { return _year; }
set { _year = value; }
}
public int DayOfYear
{
get { return _dayOfYear; }
set
{
if (_dayOfYear == value)
return;
_dayOfYear = value;
RaisePropertyChanged(() => DayOfYear);
}
}
public Season Season
{
get
{
if (_dayOfYear < 70)
return Models.Season.Dry;
else
return Models.Season.Rainy;
}
set { _season = value; }
}
public string DisplayDate
{
get
{
return (_dayOfYear.ToString() + " Season of " + _season.ToString() + " " + _year.ToString());
}
set
{
if (_displayDate == value)
return;
_displayDate = value;
RaisePropertyChanged(() => DisplayDate);
}
}
#endregion
}
ビューモデルで:
public string Date
{
get { return DataManager.Data.Date.DisplayDate; }
set
{
if (DataManager.Data.Date.DisplayDate == value)
return;
DataManager.Data.Date.DisplayDate = value;
RaisePropertyChanged(() => Date);
}
}
UI には文字列が表示されますが、更新されることはありません。日付を更新すると、「DayOfYear」セッターが起動しますが、それだけです。
これはあまり良い方法ではないと思います。カスタムカレンダースタイルを実装するMVVMフレンドリーな方法を誰かが持っているなら、私はそれを学びたいです.