Windows phone 7 优化枢轴控制windows phone 8
案例1: 我有一个包含3个Pivot项的Pivot控件,每个Pivot项在第一次获得焦点后都将填充数据(来自服务器) 现在,当我从另一个页面导航回这个透视页面时,会造成很多延迟。如何优化它并减少延迟?即使在导航回此页面时,我也无法显示进度条 案例2: 我有一个包含更多项目的列表视图,比如150,在选择一个项目时,我需要显示selectedItem的详细描述,并且它应该是可切换的,以便用户可以在同一描述页面中看到下一条记录 现在,我正在使用Pivot页面并将项目绑定到ItemsSource属性,它在导航到Pivot页面和从Pivot页面导航时会产生更多的延迟(10秒) 如何摆脱这种拖延Windows phone 7 优化枢轴控制windows phone 8,windows-phone-7,windows-phone-8,windows-phone,windows-phone-7.1,windows-phone-8.1,Windows Phone 7,Windows Phone 8,Windows Phone,Windows Phone 7.1,Windows Phone 8.1,案例1: 我有一个包含3个Pivot项的Pivot控件,每个Pivot项在第一次获得焦点后都将填充数据(来自服务器) 现在,当我从另一个页面导航回这个透视页面时,会造成很多延迟。如何优化它并减少延迟?即使在导航回此页面时,我也无法显示进度条 案例2: 我有一个包含更多项目的列表视图,比如150,在选择一个项目时,我需要显示selectedItem的详细描述,并且它应该是可切换的,以便用户可以在同一描述页面中看到下一条记录 现在,我正在使用Pivot页面并将项目绑定到ItemsSource属性,它
帮帮我。谢谢。使用
LongListSelector
(WP8)或ListView
(WP8.1)作为第一页的项目持有者。它具有UI虚拟化,所以无论页面上有多少项,都只呈现屏幕上的项。它必须解决您的案例1
延迟问题。如果没有-问题在第2页
您的详细信息屏幕方法是完全错误的<代码>透视图是为其他目的而创建的,不建议在其中容纳超过5个项目
因此,您需要:
DataContext
绑定到LayoutRoot
ManipulationCompleted
事件处理程序添加到LayoutRoot
并检查刷卡是否到位- 当用户在手机上移动手指时-将页面左右移动到相同的偏移量
- 当用户离开手指时-调用动画以完成滑动
- 动画完成后(在屏幕外翻页),更新
,并调用动画从屏幕的另一侧带来新项目DataContext
Pivot
行为,但不会对无法查看的项目消耗内存
UPD:
步骤4实施:
private void LayoutRoot_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
(LayoutRoot.RenderTransform as CompositeTransform).TranslateX += e.DeltaManipulation.Translation.X;
}
private void LayoutRoot_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e)
{
if (e.TotalManipulation.Translation.X + e.FinalVelocities.LinearVelocity.X < -100)
{
if (current < Count - 1)
{
//slide to next item
current++;
}
else
{
//no next item - slide back
}
}
else if (e.TotalManipulation.Translation.X + e.FinalVelocities.LinearVelocity.X > 100)
{
if (current > 0)
{
// slide to prev item
current--;
}
else
{
// no prev item - slide back
}
}
else
{
// no swipe - slide back
}
}
private void LayoutRoot\u操纵delta(对象发送方,System.Windows.Input.操纵deltaeventargs e)
{
(LayoutRoot.RenderTransform为CompositeTransform).TranslateX+=e.DeltaManipulation.Translation.X;
}
私有无效布局根操作已完成(对象发送方,System.Windows.Input.OperationCompletedEventArgs e)
{
if(例如,TotalManipulation.Translation.X+e.FinalLocaties.LinearLocaties.X<-100)
{
如果(电流<计数-1)
{
//滑到下一项
电流++;
}
其他的
{
//无下一项-向后滑动
}
}
否则,如果(例如TotalManipulation.Translation.X+e.FinalLocaties.LinearLocaties.X>100)
{
如果(当前>0)
{
//滑到上一项
当前--;
}
其他的
{
//无上一项-向后滑动
}
}
其他的
{
//无刷-滑回
}
}
您可以缓存案例1+2中的数据,并在应用程序栏上有一个刷新按钮来下载新数据。或者您可以一次下载几个条目(可能更新您的Web服务),然后在容器末尾再下载一些条目。关于如何做我提到的事情,SO和MSDN上有很多例子。谢谢。它已经像这样实现了,一次只下载50条记录,只有在滚动结束时,才会下载下一个项目50。导航时导致延迟的原因是什么?物品太多?。为此,您的意思是,在导航时将所有数据保存在一个文件中,在返回时从该文件还原?这不是一个成本更高的过程吗?是的,我已经在案例1中使用LLS,第2页非常轻量级。我想这是因为第一页的内容太多了。有什么建议吗?另外,对于案例2,您所说的很好,非常好。是否有检测刷击的代码示例或示例?我不是在实现滑动和动画,而是在寻找类似的东西,有一个包含三个项目的透视页面,然后更改我的数据?对我的方法有什么建议吗?你能发布一个代码示例或你的第4点的一些最低实现吗?@Pradeep_AJ,它显示了基本思想,你需要进入并添加其他代码才能使其工作