我使用Windows Store-Kit测试我的Windows Phone 8应用程序,但失败了。它说'高资源使用'。我正在使用MVVM-Pattern,这意味着我将View中的Elements与ViewModel属性绑定。
高使用率的示例:我有一个具有ContentControl的MainView。 ContentControl的内容是另一个视图(我们称之为ChildView)。当我单击ChildView中的TextBox时,会弹出InputScope(您可以在其中键入)并且View会上升,因此可以看到TextBox。当View上升时(请注意TextBox位于Pivot中),它开始变为lagg。我不知道为什么,因为我只关注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
Store-Kit结果(德语,但我认为很清楚)http://i.imagebanana.com/img/j6z24o9a/Unbenannt.png
这是视图的ViewModel中的属性(在Store-Kit结果中显示)
private string _anlohnsteuer;
public string ANLohnsteuer
{
get { return _anlohnsteuer; }
set
{
_anlohnsteuer = value;
RaisePropertyChanged(() => ANLohnsteuer);
}
}
答案 0 :(得分:1)
我不确定,但似乎你试图将可滚动控件放到另一个可滚动控件中。那将是一个坏主意。
Pivots通常会使用大量资源,因此当您处理超过4项(取决于内容)时,我会避免使用它们。
VielGlückmitdeiner App。
答案 1 :(得分:0)
这个人的精彩文章:
http://fiercedesign.wordpress.com/2012/08/14/windows-phone-performance-best-practices/
阅读主题“重绘区域”
如果UI不流畅/流畅,您必须每次都要检查UI正在重绘哪些元素。您可以通过转到App.xaml.cs并启用重绘区域来完成此操作 Application.Current.Host.Settings.EnableRedrawRegions = true;
如果某个区域或元素闪烁,则表示出现问题。尝试添加 CacheMode参数= “BitmapCache”
到您的元素。
我的应用中有很多颜色闪烁。 UI重新绘制,即我的TextBlocks,即使我没有改变它。我所要做的就是改变所有元素(特别是TextBlocks和Grids),如下所示:
该应用程序现在正在流动。
编辑:我有一个MainViewMode初始化了5个其他ViewModel(MainView包含1个ContentControl,根据用户点击的按钮,ContentControl获取一个新视图,View将获得一个新的ViewModel)。由于我在启动时只加载了1个View和1个ViewModel,因此我将其他4个ViewModel的初始化放在BackgroundWorker中 - &gt;应用开始时间大约是7秒,现在只有2个!