ListView, содержащий GridViews и ListViews
У меня есть требование создать страницу xaml с Semantic Zoom, где увеличенное представление содержит как GridViews, так и ListViews. Я начал с базового шаблона Grid Application.
Чтобы попытаться добиться этого, я заставил масштабированный элемент управления Semantic Zoom показать представление списка, а представление списка содержит элементы управления ListView и GridView, которые мне нужны для отображения данных в виде ListViewItems. Это работает, до некоторой степени - проблема в том, что анимации при нажатии мыши или касании происходят на всем дочернем элементе управления родительского ListView, а не на дочерних элементах. Такая компоновка была бы простой, если бы мне не нужно было поддерживать семантическое масштабирование.
Итак, мой вопрос в том, является ли это наилучшим способом достижения такого рода макета, или я что-то упустил Если это лучший способ, возможно ли управлять поведением, чтобы дочерние элементы имели правильный анимационный эффект при выделении?
Дополнительная информация
Выбор GridView или ListView зависит от типа элементов в коллекциях. В этом примере группы GRP 1, 3 и 4 (для отображения в сетках) являются коллекциями типа NewsFull
а остальные (чтобы показать в списках) имеют тип HeadlineOnly
оба типа наследуются от NewsBase.
Макет страницы (увеличенный) должен быть примерно таким...
Title
grp 1 grp 2 grp 3 grp 4 grp 5
[g][g][g][g] [_list item_] [g][g][g][g][g] [g][g][g] [_list_item_]
[g][g][g][g] [_list item_] [g][g][g][g][g] [g][g][g] [_list_item_]
[g][g][g][g] [_list item_] [g][g][g][g] [g][g] [_list_item_]
[g][g][g] [_list item_] [g][g][g][g] [g][g]
где [g]
является элементом вида сетки, а [_list_item_] является элементом вида списка.
Уменьшенный вид выглядит так...
Title
grp 1 grp 2 grp 3 grp 4 grp 5
[summary] [summary] [summary] [summary] [summary]
2 ответа
Возможно, вы можете попробовать использовать ItemContainerStyleSelector для замены контейнера элементов на основе типа элемента или аналогичного? Таким образом, может быть, вы можете установить для одной группы контейнер с компоновкой, а для другой - просто стековую панель?
Дизайн выглядит разумным для меня. проблема в том, что вы просто управляете поведением так, чтобы дочерние элементы имели правильный эффект анимации при выделении?
проблема здесь в том, что вам, вероятно, не хватает абстракции в отношении различных уровней объекта пользовательского интерфейса. Я предполагаю, что вы написали этот большой элемент управления, просто используя один объект xaml, а затем испортили настройку стиля. На мой взгляд, вам нужно будет разбить ваш пользовательский интерфейс на следующие уровни компонентов:
- ZoomPage // который по сути является списком
- GroupElement // который может быть объектом GRID или объектом списка в зависимости от DATACONTEXT
- GroupElement // который также имеет сводное состояние.
то, что вы указали, определенно может быть достигнуто, мне кажется, что стили не развернуты должным образом, если ваш элемент управления слишком сложен, разбейте его и протестируйте отдельно.
надеюсь это поможет