我正在WPF中使用MVVM進行項目工作,我想在其中使用虛構的日曆。我希望這一年的時間長達100天,並且可以分成兩個季節而不是幾個月。據我所知,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);
}
}
的用戶界面將顯示的字符串,但從來沒有更新。當我更新日期時,「DayOfYear」二傳手會發射,但這就是發生的一切。
我會想象這不是一個很好的方式去做這件事。如果有人有MVVM友好的方式來實現自定義日曆樣式,我很想學習它。
這看起來像我需要在這種情況下采取的方向。現在我只需要弄清楚如何讓UI中的綁定起作用。 –
這有一些漏洞(例如,在第100天讀取第2年第0天),但它似乎最接近我所需要的,所以我會繼續接受它。謝謝你的幫助。 –
@JasonD:將'DayOfYear'計算更改爲'return(_day%100)+1;' –