2011-12-15 2 views
1

В конечном счете, моя цель состоит в том, чтобы иметь сетку (по сетке я имею в виду строки и столбцы, однако это достигается) небольших панелей стека, чтобы представлять временные интервалы в течение дня. Не слишком disimilar из следующих я полагаю (простой календарь типа макета справа):Нужна «сетка» стековых панелей, которые будут использоваться в качестве календаря

http://blogs.msdn.com/blogfiles/outlook/WindowsLiveWriter/ScheduleViewinOutlook2010_F3B0/clip_image002%5B4%5D_thumb.jpg

Мне нужен способ создания этой сетки динамически и именование панели соответственно для всякий раз, когда событие вызывается (к быть конкретным - событие перетаскивания, событие капли каждой панели будет подключено к тому же методу, в котором я должен различать, какая панель (то есть в какой точке дня и в какой строке) элемент был отброшен).

Благодарим за помощь!

Dan

ответ

2

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

Возможно, вам захочется использовать вложенный ItemsControl. Я сделал что-то подобное в прошлом, когда мой внешний ItemsControl для Календаря был Grid, а ячейка сетки содержала внутренний ItemsControl с StackPanelTaskItems.

Важнейшей частью является получение уровня данных. Я использовал CalendarDayModel классы, которые имели свойство Date и список ObservableCollection<TaskModel>. Он также имел команды для обработки пользовательских событий, таких как события двойного щелчка.

Мой внешний ItemsControl был связан с ObservableCollection<CalendarDayModel> и внутренней ItemsControl были связаны с ObservableCollection<TaskModel>

У меня есть несколько примеров с ItemsControl here, но принять к сведению последний пример, который использует сетку.

+0

Большое спасибо Рэйчел, это блестяще - очень ценю обратную связь. Я понимаю, как я моделирую данные и храню списки, вероятно, одна из самых сложных частей, но я просто просто возьму подход, который вы сделали. Моя забота в данный момент заключается в том, как я на самом деле собираюсь дифференцировать ячейки/время суток относительно того, какой день/stackpanel называется обработчиком событий drop. Мне нужно было бы как-то назвать динамические стеки, не так ли ?? Извините за вопросы, которые у меня есть - совершенно новый для WPF, очень новый, и у меня есть руки в этом проекте. –

+1

@DanielMcNulty Это зависит от того, как у вас есть структуры данных. У вас может быть команда, которая обрабатывает выпадающие элементы, обработанные в DataItem ячейки, поэтому отбрасывание элемента будет выполнять событие конкретной ячейки и передать его перетаскиваемому элементу в качестве параметра. – Rachel

Смежные вопросы