Как получить многоуровневую иерархию с CollectionViewSource для привязки к Semantic Zoom в Windows 8.1

У меня есть приложение Windows 8.1, в котором я пытаюсь достичь 3 уровней иерархии с помощью CollectionViewSource, а затем привязать его к моему семантическому масштабированию.

Мой модельный класс выглядит следующим образом

class Transaction
{
    string id {get; set;}
    string name {get; set;}
    DateTimeOffset date {get; set;
}

Примерная стоимость этой модели может быть следующей

[1, Food, 31/08/2014]
[2, Movie, 15/08/2014]
[3, Medicine, 20/07/2014]
[4, GameConsole, 02/07/2014]
[5, MobileBill, 18/06/2014]
[4, Tv, 06/06/2014]

Я хочу отобразить эти данные в моем Semantic Zoom, чтобы

  1. Мой ZoomedOutView — это GridView, который отображает такие месяцы, как август, июль и июнь.
  2. В моем ZoomedInView данные сгруппированы по дате

Для этого мне нужно создать эти 3 уровня в моем CollectionViewSource.

  1. Месяц
  2. Дата
  3. Индивидуальная транзакция

Пример данных для вышеуказанной иерархии показан ниже.

August (Appears in ZoomedOutView only)
    August 31
        Transaction 1
        Transaction 2
    August 15
        Transaction 3
        Transaction 4
    August 1
        Transaction 5
        Transaction 6

July (Appears in ZoomedOutView only)
    July 20
        Transaction 7
        Transaction 8
    July 2
        Transaction 9
        Transaction 10

June (Appears in ZoomedOutView only)
    June 10
        Transaction 11
        Transaction 12

Мой семантический увеличенный вид будет иметь

August
July
June

Мой семантический зум ZoomedInView должен иметь

August 31
    Transaction 1
    Transaction 2
August 15
    Transaction 3
    Transaction 4
August 1
    Transaction 5
    Transaction 6
July 20
    Transaction 7
    Transaction 8
July 2
    Transaction 9
    Transaction 10
June 10
    Transaction 11
    Transaction 12

Я пытаюсь сгруппировать свой список в CollectionViewSource следующим образом

List<Transaction> response = GetTransactions();
var TransactionCollectionViewSource = new CollectionViewSource();
TransactionCollectionViewSource.Source = response.ToGroups(x => x, x => x.date.Month);
TransactionCollectionViewSource.IsSourceGrouped = true;

У меня есть группа по месяцам, как мне снова сгруппировать это по дням? Должен ли я иметь 2 CollectionViewSource? Или можно добиться этого только с одним CollectionViewSource. Я запутался.

Я был бы очень рад, если кто-то может указать мне в правильном направлении. Заранее спасибо.


person HelpMatters    schedule 25.08.2014    source источник
comment
stackoverflow.com/questions/52455775/   -  person Mohammad Roshani    schedule 23.09.2018


Ответы (1)


SemanticZoom: http://msdn.microsoft.com/en-us/library/windows/apps/hh465319.aspx

Попробуй это:

private void Zoom_ViewChangeStarted(object sender, SemanticZoomViewChangedEventArgs e)
{
    if (!e.IsSourceZoomedInView)
    {
        e.DestinationItem.Item = _selectedHubSection;
    }
}

Удачи!

person Jerry Nixon    schedule 04.09.2014
comment
Извините, что такое _selectedHubSection? Где он объявлен/определен? Также я прошу вас более подробно объяснить, как это работает. Мне нужно, чтобы масштабирование работало правильно. Например, если я нажму на август в ZoomedOutView, он должен показать мне транзакции августа в ZoomedInView и так далее. - person HelpMatters; 04.09.2014