2014-12-29 2 views
4

Есть ли способ реализовать EPG с использованием XAML для WinPhone/WinRT? Я видел много приложений для iOS/Android/Web, но не WP или WinStore.Электронный программный гид (EPG) XAML

  1. Он должен поддерживать большое количество элементов (500 каналов, N программу для каждого, где N является количеством программ в течение недели)
  2. Это может иметь пробела внутри, как какая-то программа отсутствует или нет данных от всех строка, но пустая (прозрачная) строка должна отображаться.
  3. Количество элементов в каждой строке будет всегда отличаться (как работает EPG)
  4. Загрузка должна быть быстрой и прокручиваемой.
  5. использование памяти должно быть нормальным, приложение не должно врезаться еще потому многие нарисованных взгляды т.е. элементов должны виртуализировать (повторно)

GridView выглядит как что-то подобное, но есть некоторые вопросы:

  • , чтобы сделать элементы разного размера элементов - нужно переключить itemsPanel на VariableSizedWrapGrid, который не поддерживает виртуализацию. Есть несколько попыток решить эту проблему, например, this, но не нативного/проверенного/широко используемого решения
  • не уверен, что даже с VariableSizedWrapGrid можно будет поддерживать пробелы и отсутствие содержимого, похоже, что GridView заполнит элементы в пробелах в любом случае (создание пустых прозрачных элементов звучат как грязный хак)
  • многих деталей будут проблемы, нужно каким-то образом сделать Пошаговую загрузку
  • использования памяти/производительность desnt выглядит хорошо

ли кто-то осуществить это? Есть ли какой-либо компонент/руководство для этого? Какой контроль xaml позволит это и как будет отображаться производительность/память/время?

+1

У вас есть работа? –

ответ

0

Я сделал XAML ЭПП для UWP не так давно, после того, как много ЧПК я использовал простую сетку с ScrollViewer столбцы и строки генерируются динамически из кода позади (большая часть кода была на коде сзади) и пару ListView.

Мы также писали наши собственные виртуализации данных (поскольку Сетка не поддерживает виртуализацию) ...

WinRT XAML Toolkit - было очень удобно

Это была не простая задача, но это duable :)

Предполагая, что у вас есть модель данных ЭПП, что-то вроде - List (каждый канал имеет список программ)

То, что я сделал, это - Я создал пустую сетку, обернутую внутри ScrollViewer, а затем я связал RowDefinition для каждого канала, а затем добавил к сетке (по индексу канала).

Распространение программ - было более сложным (поскольку некоторые из программ имеют перекрытие времени). Я добавил каждую программу как элемент Border к каналам RowDefinitios - поместив ее на Маржина времени расчет.

виртуализация данных - То, что я сделал это вычисление периода времени, который виден пользователю (вьюпорт типа Rect), а затем, когда пользователь прокручивается - я загружен только программы/каналов, которые пересекаются с VIEWPORT. Например, если пользователь просматривает EPg с 14: 00-18: 00, я не буду загружать программу 18:05 в представление.

Выбор программы (расширение для деталей) - вы можете просто установить ширину выбранной программы и ее RowDefinition при выборе.

  • Основная проблема здесь - это клавиатурное новизование (которое действительно сложно реализовать), но если вы касаетесь/мыши, то ваша проблема с решением решена.
+0

Не могли бы вы поделиться некоторым кодом? –

+0

Я не могу, но я попытаюсь объяснить основную идею –

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