【问题标题】:Windows Phone ContainerContentChanging Phase always 0Windows Phone ContainerContentChanging 阶段始终为 0
【发布时间】:2015-03-08 16:01:50
【问题描述】:

在 WinRT WP8.1 应用上使用 ListView:

我正在尝试在 ListView 上使用 ContainerContentChanging 事件 -

private void ListOnContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
    {
        var viewer = args.ItemContainer.ContentTemplateRoot as View;
        if (viewer == null)
        {
            return;
        }

        if (args.InRecycleQueue)
        {
            viewer.ClearData();
        }
        else if (args.Phase == 0)
        {
            viewer.ShowPlaceholder(args.Item as ViewModel);

            args.RegisterUpdateCallback(this.ContainerContentChangingDelegate);
        }
        else if (args.Phase == 1)
        {
            // Load
            args.RegisterUpdateCallback(this.ContainerContentChangingDelegate);
        }
        else if (args.Phase == 2)
        {
            // Load more
            args.RegisterUpdateCallback(this.ContainerContentChangingDelegate);
        }
        else if (args.Phase == 3)
        {
            // Show images
        }

        args.Handled = true;
    }

我遇到的问题是 ContainerContentChangingEventArgs 上的 Phase 属性在滚动查看更多项目时始终为 0。

(对于初始视图中加载的项目,一切正常 - 只有当我开始滚动时,没有项目更新超过其占位符。

知道为什么 hase 属性不会更新吗?

【问题讨论】:

    标签: c# windows windows-runtime windows-phone-8.1 winrt-xaml


    【解决方案1】:

    注册更新回调时需要指定阶段号。

    您的代码应如下所示:

    private void ListOnContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
    {
        var viewer = args.ItemContainer.ContentTemplateRoot as View;
        if (viewer == null)
        {
            return;
        }
    
        if (args.InRecycleQueue)
        {
            viewer.ClearData();
        }
        else if (args.Phase == 0)
        {
            viewer.ShowPlaceholder(args.Item as ViewModel);
    
            args.RegisterUpdateCallback(1, this.ContainerContentChangingDelegate);
        }
        else if (args.Phase == 1)
        {
            // Load
            args.RegisterUpdateCallback(2, this.ContainerContentChangingDelegate);
        }
        else if (args.Phase == 2)
        {
            // Load more
            args.RegisterUpdateCallback(3, this.ContainerContentChangingDelegate);
        }
        else if (args.Phase == 3)
        {
            // Show images
        }
    
        args.Handled = true;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-08
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2014-01-09
      • 1970-01-01
      • 2011-08-15
      相关资源
      最近更新 更多