如何在Silverlight中创建月视图控件

时间:2009-12-08 20:27:16

标签: silverlight wrappanel

我需要创建一个类似于月视图控件的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

1 个答案:

答案 0 :(得分:0)

几周前我做了这件事。我所做的是创建两个silverlight用户控件,一个用于白天,一个用于月份。

月份控件使用如下的日期控件填充名为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,委托函数指针(处理点击事件)和当前所选日期作为参数。