Как в WPF лучше всего создать представление календаря, похожее на Outlook 2007?

Я пишу настольное приложение WPF, и у меня есть представление, которое должно выглядеть как календарь. Мне нужно показать только четыре недели (исправлено). Каждая неделя будет иметь список элементов (вероятно, представленных с помощью ListView). Я спорю между двумя подходами:

  1. Использование элементов управления макетом — элемент управления Grid, где каждая «ячейка» содержит ListView.

  2. Использование ListView + GridView, а затем настройка стиля, чтобы он больше походил на календарь

На мой взгляд, элементы управления макетом было бы проще реализовать, но что-то в этом кажется грязным. По сути, я бы жестко кодировал 28 ячеек, каждая из которых содержала бы ListView. Но опять же, это было бы просто.

Я думаю, что ListView/GridView будет более элегантным, но мне все еще нужно создать ListView для каждой ячейки, а затем мне нужно выяснить, как стилизовать элемент управления таким образом, чтобы он больше походил на календарь, а не на календарь. стол.

Мысли?


person Jordan Parmer    schedule 28.04.2009    source источник


Ответы (3)


Вы можете использовать ListBox с UniformGrid. Это позаботится о создании базового макета. С небольшим триггером на текущий месяц, чтобы реализовать изменение стиля, когда отображаемый день не в текущем месяце.

Затем каждый день может иметь ListView или ListBox как часть своего шаблона для отображения задач/встреч/что угодно.

Все это будет привязано к коллекции объектов, представляющих «дни» и их содержимое.

ListBox обычно является хорошим выбором для базы ItemsControl.

Вам также следует взглянуть на то, как элемент управления «Календарь» встроен в WPF, это может помочь вам получить некоторые идеи.

person Denis Troller    schedule 28.04.2009
comment
О, я не знал, что есть встроенный контроль. Я бы предпочел пойти по этому пути, если он легко доступен. Вы говорите о выборе даты или календаре большего размера? - person Jordan Parmer; 28.04.2009
comment
Я говорю о части календаря DatePicker (разве это не отдельный элемент управления? Может быть, и нет). Это не будет отвечать вашим требованиям сразу, но вы можете извлечь из этого пользу, даже если это просто понимание того, как писать настраиваемые элементы управления в WPF. - person Denis Troller; 28.04.2009

Возможно, вам поможет следующий пример: http://www.codeproject.com/KB/WPF/WPFOutlookCalendar.aspx

person Tom Deleu    schedule 28.04.2009

Взгляните на источник Silverlight Toolkit, он может работать в WPF.

person Nicolas Dorier    schedule 28.04.2009