Mindscape WPF Elements中进程控件的使用

  原文转载自慧都控件网:http://www.evget.com/zh-CN/Info/catalog/18212.html 

Mindscape WPF Elements进程控制器提供了一个用于创建、查看、基于项目的日历样式的时间编辑的用户界面。一个进程调度可以基于一天、一周、或是以月来查看,并且提供了用于用户选择的视图和在日期之间导航的的用户界面,你也可以使用进程调度程序来显示约会、任务、预定等等。

示例:

<ms:Scheduler x:Name="SchedulerControl" />

自定义添加和编辑行为:

    当用户创建了一个新的进程项目时,调度程序提出了ItemAdded事件,默认情况下,将显示一个子窗口,用户可以编辑新项目(如设置一个名、编辑时间、设置复发)。禁用默认行为,并显示自己“添加项目”的用户界面,来控制添加项目事件。如果你想要显示默认的用户界面是,但是依然需要在项目添加是得到通知,在AddScheduleItemEventArgs设置ShowDefaultEdito为true就行了。

设置进程

    通过进程属性,你可以访问进程,查看进程类或者是更多的信息。使用添加项目的方法,来添加项目到进程中,或者是移除项目。

    在项目中的每个项目由项目进程所体现,而这里面包含了起始时间、结束时间、项目名称等信息。你也可以创建项目进程的子类来包含一些其他的信息,比如说任务调度的优先级等。

如下所示:

private void AddTryTask()
{
  SchedulerControl.Schedule.AddItem(new ScheduleItem
  {
    StartTime = DateTime.Now.Date.AddHours(8),
    EndTime = DateTime.Now.Date.AddHours(9),
    Name = "Try WPF Elements" 
  });
}

保存导入进程:

    进程控件不是提供一个内置的方法来存储或导入一个进程,主要是因为进程在通常情况下呢是被存储在数据库里面,允许查询等,所以说存储将依赖于数据库设计,WCF 服务接口等。

    若要保存或加载计划,使用 Scheduler.Schedule 属性,读取该附表的内容,以便可以使用 Schedule.Items 属性将它们存储。如果要从存储区加载时填充日程安排,使用 Schedule.AddItem 方法就行了。

    下面的代码提供了一个简单的保存和加载使用 XML 示例,这例子可用于在客户端机上独立存储中存储的日程安排。

代码如下:

private static void WriteSchedule(Stream stm, Schedule schedule)
{
  XElement element = new XElement("Schedule", schedule.Items.Select(si => new XElement("Item",
    new XAttribute("Name", si.Name),
    new XAttribute("StartTime", si.StartTime),
    new XAttribute("EndTime", si.EndTime),
    si.IsRecurring ?
      new XElement("Recurrence",
        new XAttribute("StartDate", si.RecurrenceInfo.StartDate),
        new XAttribute("StartTime", si.RecurrenceInfo.StartTime),
        new XAttribute("Duration", si.RecurrenceInfo.Duration),
        new XAttribute("EndDate", si.RecurrenceInfo.EndDate),
        new XAttribute("EndType", si.RecurrenceInfo.EndType),
        new XAttribute("MaxOccurrences", si.RecurrenceInfo.MaxOccurrences),
        si.RecurrenceInfo.RecurrencePattern.ToXml()
        )
      : null
    )));
  element.Save(stm);
}

private static void ReadSchedule(Stream stm, Schedule schedule)
{
  XDocument document = XDocument.Load(stm);
  IEnumerable<ScheduleItem> items = document.Elements("Schedule").Elements("Item").Select(e => new ScheduleItem
  {
    Name = (string)e.Attribute("Name"),
    StartTime = (DateTime)e.Attribute("StartTime"),
    EndTime = (DateTime)e.Attribute("EndTime"),
    RecurrenceInfo = e.Elements("Recurrence").Select(rel => new RecurrenceInfo
    (
      (DateTime)rel.Attribute("StartDate"),
      (TimeSpan)rel.Attribute("StartTime"),
      (TimeSpan)rel.Attribute("Duration"),
      rel.Elements().First().ParseRecurrencePattern(),
      (RecurrenceEndType)(Enum.Parse(typeof(RecurrenceEndType), (string)rel.Attribute("EndType"), true)),
      (DateTime)rel.Attribute("EndDate"),
      (int)rel.Attribute("MaxOccurrences")
    )).FirstOrDefault()
  });

  schedule.Clear();

  foreach (ScheduleItem item in items)
  {
    schedule.AddItem(item);
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章