0

Я работаю над проектом Windows Phone 8.1 на базе XAML. У моего MainPage есть элемент управления Pivot, первый элемент которого предназначен для какой-то «приборной панели», объединяющей несколько видов данных, таких как события и задачи.Объединение нескольких объектов в один список

Для этой цели у меня есть классы моделей Event и To-do (а не фактическое имя, но вы получите эту идею), поскольку я использую MVVMLight для запуска шоу.

Я в настоящее время создал ListView в пункте поворота в MainPage.xaml. Мне было интересно, как я могу заставить его работать так, что все объекты с объектами Event и To-do находятся в одном сводном элементе.

Я осмотрел и нашел CompositeCollection, но это только на WPF, а не на WinRT. Я пробовал работать с Midgard.CompositeCollection, но данные не отображаются, и я не понимаю, как я могу по-разному стилизовать эти независимые типы данных.

Есть ли какие-либо методы объединения двух наборов данных вместе в одном наборе списков, но будут ли они оформлены отдельно? Есть ListView правильный контроль для работы с несколькими видами данных, или есть что-то еще?

Я по-прежнему новичок в этой области; извините, если это базовая концепция, которую я пока не могу понять.

Спасибо!

ответ

0

Существует способ, и это довольно просто. Сделайте оба Event и To-do наследуйте от того же базового класса (может быть пустым) и создайте ObservableCollection этого базового типа (также может быть object, если вы не хотите создавать отдельный класс). Добавьте как Event, так и To-do объект ObservableCollection.

Привязать ListView к этому ObservableCollection. Теперь наступает сложная часть. Вам нужно создать DataTemplateSelector. Для руководства по конкурированию см. http://blog.kulman.sk/using-different-data-templates-with-gridview-in-windows-8-apps/ (статьи предназначены для GridView, но он работает одинаково для ListView).

+0

Как определить шаблон на основе его класса? Скажем, определите, что в определенный момент времени TemplateSelector работает над 'Event', а не' to-do'? Как я могу назвать имя класса объекта для работы с переопределением в сообщении? –

+0

В сообщении я использую 'return (item is MagazineViewModel) .IsTop? BigMagazineTemplate: MagazineTemplate; просто измените тест на свои классы, например 'return item is Todo? TodoTemplate: EventTemplate' –

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