【问题标题】:How to obtain Multi-level hierarchy with CollectionViewSource to bind to Semantic Zoom in Windows 8.1如何在 Windows 8.1 中使用 CollectionViewSource 获取多级层次结构以绑定到语义缩放
【发布时间】:2014-08-25 09:15:49
【问题描述】:

我有一个 Windows 8.1 应用程序,我试图在其中使用 CollectionViewSource 实现 3 级层次结构,然后将其绑定到我的语义缩放

我的模型类如下所示

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]

我想在我的语义缩放中显示此数据,以便

  1. 我的 ZoomedOutView 是一个 GridView,它显示月份,如 8 月、7 月和 6 月。
  2. 在我的 ZoomedInView 中,数据按日期分组

要实现这一点,我必须在我的 CollectionViewSource 中创建这 3 个级别

  1. 日期
  2. 个人交易

上述层次结构的示例数据如下所示

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 来实现这一点。我很困惑。

如果有人能指出我正确的方向,我会很高兴。 提前致谢。

【问题讨论】:

标签: c# winrt-xaml windows-8.1 collectionviewsource semantic-zoom


【解决方案1】:

语义缩放: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;
    }
}

祝你好运!

【讨论】:

  • 抱歉 _selectedHubSection 是什么?它在哪里声明/定义?另外,我恳请您更详细地解释这是如何工作的。我需要放大才能正常工作。例如,如果我在 ZoomedOutView 中单击 8 月,它应该会在 ZoomedInView 中显示 8 月的交易等等。
猜你喜欢
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
相关资源
最近更新 更多