2011-03-25 76 views
0

我想制作一个控件,它具有类似于MS Outlook月视图日历的功能。事实上,我确实设法完成了整个控制,但是我碰到了一个问题,现在我陷入困境。以下是我如何实现它:WPF:跨多个ItemsControl展开收集项目(MS Outlook月视图)

我已经创建了一个垂直方向的容器ItemsCollection MonthView。该容器包含水平定向的集合ItemsCollection WeekView - 这些控件中的每一个代表日历中的一行周行。每个WeekView包含一组ItemsCollection DayView控件,它是垂直定向的容器,用于存储约会。下面是说明了这所有的图片:

Layout of calendar month view

每个DayView集合绑定到List<Appointment> Appointments列表,并有一个过滤器只显示那些被安排在那一天的约会。它看起来都很膨胀,但这里有一个问题:如果Appointment appointment计划超过一天(多天的活动),同一个条目在多个DayView容器中可见,这是合乎逻辑的。

如果计划超过一天,我希望有一个预约控制分布在多个DayView之间。我不知道如何实现这一点。任何人都可以让我知道我的设计中需要更改哪些内容以及如何为Appointment定义模板以支持此要求?谢谢。

回答

0

这有点棘手,因为您已经创建了多少。目前我无法对此进行测试,但您可以使用WPF提供的Transformclass implementations (link to ScaleTransform)之一,并将其​​应用于演示文稿的RenderTransform阶段。使用这种技术,您可以在两个DayView控件之间绘制一个约会,而不必更改太多。

这是一个link to an article演示技术。

请注意,这会导致您需要处理的其他问题,其中最有可能发生的情况是您的预约时间跨度为2天,第二天约会一天。这种技术会导致它们重叠。