我正在使用 MVVM 在 WPF 中开发一个项目,我想在其中使用虚构的日历。我希望这一年有 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 友好的方式来实现自定义日历样式,我很想学习它。