2013-04-26 53 views
0

我使用Windows Store-Kit來測試我的Windows Phone 8應用程序,但它失敗了。它說'高資源使用率'。我正在使用MVVM-Pattern,這意味着我使用ViewModel propertys在View中綁定了我的元素。Windows Phone - 避免高資源使用率

高使用率時的示例:我有一個具有ContentControl的MainView。 ContentControl的內容是另一個View(我們稱之爲ChildView)。當我點擊ChildView中的文本框時,會彈出InputScope(您可以鍵入的位置),並且視圖上升,因此可以看到TextBox。當視圖向上移動時(注意TextBox在透視圖中),它開始落後。我不知道爲什麼,因爲我只關注TextBox和PivotItem。我的問題是如何降低資源使用率?如果你需要任何東西,寫下來,我會在這裏發佈。

MainPage.xaml中

<Grid> 
    <Grid x:Name="LayoutRoot" HorizontalAlignment="Left"> 

     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
     </Grid.RowDefinitions> 

     <ScrollViewer Name="MyScrollViewer" Height="Auto" HorizontalAlignment="Left" VerticalAlignment="Top" Width="Auto" HorizontalScrollBarVisibility="{Binding Horizontal}" VerticalScrollBarVisibility="{Binding Vertical}"> 
      <!--ContentPanel - zusätzliche Inhalte hier platzieren--> 
      <StackPanel ScrollViewer.HorizontalScrollBarVisibility="Auto" Grid.Row="2" Opacity="50"> 
       <ContentControl Content="{Binding MyContent}" Name="MyContentControl" IsTabStop="False" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"/> 
      </StackPanel> 

     </ScrollViewer> 
    </Grid> 
</Grid> 

ChildView.xaml http://textuploader.com/?p=6&id=zMDoD

商店-Kit的結果(在德國,但我認爲這是明顯的)http://i.imagebanana.com/img/j6z24o9a/Unbenannt.png

這是在視圖模型是什麼屬性該視圖看起來像(其在Store-Kit結果中示出)

private string _anlohnsteuer; 
    public string ANLohnsteuer 
    { 
     get { return _anlohnsteuer; } 
     set 
     { 
      _anlohnsteuer = value; 
      RaisePropertyChanged(() => ANLohnsteuer); 
     } 
    } 
+0

請顯示您的代碼。 – Raptor 2013-04-26 09:08:39

+0

很高興知道它是否適用於wp8或wp7。我還記得一些關於ui總是需要響應的必要信息,但我不確定它是否僅適用於windows8應用程序或wp8。因此,也許檢查一下你的代碼是否會讓應用程序掛起或凍結50ms(這似乎是微軟的幻數),並儘量減少這種情況。也許你可以派遣一些東西並將這些長時間的呼叫分配給多個幀。 – dowhilefor 2013-04-26 09:14:46

+0

我正在使用Windows Phone 8並且很抱歉地說這個,但是我根本不知道你的意思是什麼......當我點擊一個TextBox並且PivotItem正在進行時,它會「凍結」向上。 – Rudi 2013-04-26 09:32:09

回答

1

我不確定,但似乎你正試圖將一個可滾動控件放入另一個可滾動控件中。這將是一個壞主意。

樞軸通常使用大量資源,因此當您處理超過4個項目(取決於內容)時,我會避免使用它們。

VielGlückmit deiner App。

+0

舊代碼。 ScrollViewer消失了&在「Grid x:Name =」LayoutRoot「Horizo​​ntalAlignment =」Left「>」我使用了'CacheMode =「BitmapCache」' - > ContentControl的內容現在正在運行流體:)。 Btw。除Pivot之外還有其他選擇嗎?例如「TabItem」的例子? – Rudi 2013-05-08 16:49:22

+0

不是我所知道的。儘管第三方可能會提供一些自定義控件。 – SBoss 2013-05-10 06:05:52

0

大文章被這傢伙:

http://fiercedesign.wordpress.com/2012/08/14/windows-phone-performance-best-practices/

閱讀主題「重繪區域」

如果用戶界面不流暢/液,你必須檢查哪些元素正在重繪每次由用戶界面。您可以通過轉到App.xaml.cs並啓用重繪區域 Application.Current.Host.Settings.EnableRedrawRegions = true;

如果某個區域或元素閃爍,則說明有問題。嘗試將 CacheMode =「BitmapCache」

添加到您的元素。

我的應用程序中有很多顏色閃爍。即使我沒有改變它,用戶界面也會重新渲染,即我的TextBlocks。我所要做的就是改變所有元素(特別是TextBlocks和Grids),如下所示:

該應用程序現在運行流體。編輯:我有一個MainViewMode初始化了5個其他ViewModel(MainView包含1個ContentControl,並且取決於用戶點擊哪個按鈕,ContentControl獲得一個新的View並且View將獲得一個新的ViewModel)。由於我在啓動時只加載了1個View和1個ViewModel,所以我將其他4個ViewModel的初始化放入了BackgroundWorker - > App開始時間約7秒之前,現在只有2個!