簡體   English   中英

優化Pivot Control Windows Phone 8

[英]Optimising Pivot Control windows phone 8

情況1:

我有一個帶有3個數據透視項的數據透視控件,並且每個數據透視項在第一次獲得焦點時都將充滿數據(來自服務器)。

現在,當我從其他頁面導航回到該數據透視頁面時,會產生很多延遲。 如何優化它並減少延遲? 導航回此頁面時,即使我也無法顯示ProgressBar。

情況2:

我有一個包含更多項目的ListView,例如150,選擇一個項目時,我需要顯示selectedItem的詳細描述,並且它應該是可滑動的,以便用戶可以在同一描述頁面中看到下一條記錄。

現在,我正在使用“數據透視頁面”並將項目綁定到ItemsSource屬性,並且導航到“數據透視頁面”並從“數據透視頁面”導航時會產生更多的延遲(10秒)。

如何擺脫這種延遲?

幫我。 謝謝。

使用LongListSelector (WP8)或ListView (WP8.1)作為首頁上的項目持有人。 它具有UI虛擬化,因此無論頁面上有多少項目,都只會呈現屏幕上的項目。 它必須解決您的case 1延遲。 如果不是,則問題出在第2頁中。

您詳細信息的屏幕處理方法是完全錯誤的。 Pivot是為其他目的而創建的,不建議在其中容納5個以上的項目。

因此,您需要:

  1. 創建用於顯示一項的頁面並將DataContext綁定到LayoutRoot
  2. ManipulationCompleted事件處理程序添加到LayoutRoot並檢查是否有滑動
  3. DataContext更新為上一個或下一個項目。 這將更新屏幕上顯示的數據
  4. 在這種情況下,請創建動畫以平滑當前頁面向左和向右的過渡:
    • 當用戶在電話上移動手指時-將頁面左右移動相同的偏移量
    • 當用戶離開手指時-調用動畫以完成滑動
    • 動畫完成時(屏幕外的頁面),更新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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM