WPF: расширение элемента коллекции в нескольких элементах ItemsControl (просмотр месяца MS Outlook) - PullRequest
0 голосов
/ 25 марта 2011

Я пытаюсь создать элемент управления, который будет иметь функции, аналогичные календарю просмотра месяцев 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 голосов
/ 26 марта 2011

Это немного сложно, учитывая, сколько вы уже создали.Сейчас я не могу проверить это, но вы можете использовать одну из реализаций класса Transform (ссылка на ScaleTransform) , предоставленную WPF, и применить ее на этапе RenderTransformпрезентация.Используя эту технику, вы сможете перенести одну из ваших встреч поверх двух элементов управления DayView, не меняя слишком много.

Вот ссылка на статью , которая демонстрирует эту технику.

Имейте в виду, что это вызовет другие проблемы, с которыми вам придется столкнуться, наиболее вероятнаяэто когда у вас назначена встреча на 2 дня и однодневная встреча на второй день.Эта техника приведет к их перекрытию.

...