Windows Phone ContainerContentChanging Phase always 0
本文关键字:always Phase ContainerContentChanging Phone Windows | 更新日期: 2024-11-03 19:23:33
在WinRT WP8.1应用程序上使用ListView:
我正在尝试在列表视图上使用容器内容更改事件,如下所示 -
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;
}
我遇到的问题是,在滚动查看更多项目时,容器内容更改事件参数上的阶段属性始终为 0。
(对于初始视图中加载的项目,一切都可以正常工作 - 只有当我开始滚动时,才没有项目更新超过其占位符。
任何想法为什么 hase 属性不会更新?
注册更新回调时需要指定阶段号。
您的代码应如下所示:
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;
}