案例1:
我有一个带有3个数据透视项目的数据透视控件,每次数据透视项目首次获得焦点时,都会填充数据(来自服务器)。
现在,当我从其他页面导航到此Pivot页面时,会造成很多延迟。如何优化它并减少延迟?导航回此页面时,即使我无法显示ProgressBar。
案例2:
我有一个包含更多项目的ListView,例如150,在选择项目时我需要显示selectedItem的详细描述,它应该是可刷的,以便用户可以在同一描述页面中看到下一条记录。 / p>
现在,我正在使用Pivot页面并将项目绑定到ItemsSource属性,并且在导航到数据透视页面和从数据透视页面导航时会产生更多延迟(10秒)。
如何摆脱这种延迟?
帮帮我。感谢。
答案 0 :(得分:0)
在第一页上使用LongListSelector
(WP8)或ListView
(WP8.1)作为项目持有者。它具有UI虚拟化,因此无论页面上有多少项目,都只会呈现屏幕上的项目。它必须解决您的case 1
延迟。如果没有 - 问题是在第2页中破坏。
你的细节屏幕方法是完全错误的。 Pivot
是为其他目的而创建的,不建议在其中容纳超过5个项目。
所以你需要:
DataContext
绑定到LayoutRoot
ManipulationCompleted
事件处理程序添加到LayoutRoot
并检查是否存在滑动DataContext
更新为上一个或下一个项目。这将更新屏幕上显示的数据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
}
}