我需要创建一个类似于月视图控件的Outlook来显示约会。 (显示一个月中所有日期的网格,工作日垂直对齐。应显示每天的日期和周日,并且约会应在正确的日期内显示在列表视图中)
我需要一些关于从哪里开始的输入。
假设ViewModel看起来像这样:
public class MonthViewModel
{
public List<DateTime> DaysInMonth { get; set; }
public List<Appointment> Appointments { get; set; }
}
public class Appointment
{
public string Title { get; set; }
public DateTime Start { get; set; }
public string Description { get; set; }
}
我是否需要手动布置日期,安排约会,还是可以更优雅地进行约会?
我尝试了几个带有绑定的apporoches,但都没有成功。关于该做什么的任何提示?
关心Larsi
答案 0 :(得分:0)
月份控件使用如下的日期控件填充名为MonthRows的堆栈面板:
ViewStartDate = new DateTime(CurrentDate.Year, CurrentDate.Month, 1);
ViewEndDate = ViewStartDate.AddMonths(1).AddDays(-1);
while (ViewStartDate.DayOfWeek != System.DayOfWeek.Sunday)
{
ViewStartDate = ViewStartDate.AddDays(-1);
}
while (ViewEndDate.DayOfWeek != System.DayOfWeek.Saturday)
{
ViewEndDate = ViewEndDate.AddDays(1);
}
DateTime tmpDate = ViewStartDate;
while (tmpDate <= ViewEndDate)
{
StackPanel stack = new StackPanel()
{
Orientation = Orientation.Horizontal
};
for (int i = 0; i < 7; i++)
{
stack.Children.Add(new ucDay(tmpDate.Year, tmpDate.Month, tmpDate.Day, EventFunc, CurrentDate));
tmpDate = tmpDate.AddDays(1);
}
MonthRows.Children.Add(stack);
}
ucDay构造函数接受Year,Month,Day,委托函数指针(处理点击事件)和当前所选日期作为参数。