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, а затем испортили настройку стиля. На мой взгляд, вам нужно будет разбить ваш пользовательский интерфейс на следующие уровни компонентов:

  1. ZoomPage // который по сути является списком
  2. GroupElement // который может быть объектом GRID или объектом списка в зависимости от DATACONTEXT
  3. GroupElement // который также имеет сводное состояние.

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

надеюсь это поможет

Другие вопросы по тегам