WPF:跨多个ItemsControl展开集合项(MS Outlook月视图)

时间:2011-03-25 01:31:17

标签: wpf user-controls wpf-controls

我正在尝试创建一个具有类似于MS Outlook月视图日历功能的控件。事实上,我确实设法完成了整个控制,但我碰到了一个问题,现在我陷入困境。这是我实现它的方式:

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

Layout of calendar month view

每个DayView集合都绑定到List<Appointment> Appointments列表,并且有一个过滤器,仅显示为该特定日期安排的约会。这一切看起来都很膨胀,但这里有一个问题:如果Appointment appointment被安排超过一天(多天活动),则在多个DayView容器中可以看到相同的条目,这是合乎逻辑的。

如果预定超过一天,我希望有一个约会控制权在多个DayView之间传播。我不知道如何实现这一点。有谁可以让我知道我需要在设计中更改什么以及如何为Appointment定义模板以支持此要求?谢谢。

1 个答案:

答案 0 :(得分:0)

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

这是展示该技术的link to an article

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