Windows Phone -避免高资源使用
本文关键字:资源 高资源 Phone Windows | 更新日期: 2023-09-27 18:11:10
我使用Windows Store-Kit测试了我的Windows Phone 8应用程序,结果失败了。上面写着"高资源使用率"。我正在使用mvvm模式,这意味着我将视图中的元素与ViewModel属性绑定在一起。
高使用率的例子:我有一个MainView,它有一个ContentControl。ContentControl的内容是另一个视图(我们叫它ChildView)。当我点击ChildView中的一个TextBox时,InputScope会弹出(你可以在这里输入),View会上升,这样就可以看到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
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);
}
}
我不确定,但似乎你试图把一个可滚动控件到另一个可滚动控件。那是个坏主意。
pivot通常会使用很多资源,所以当你处理超过4个项目时(取决于内容),我会避免使用它们。
Viel gl
这家伙的文章很棒:
http://fiercedesign.wordpress.com/2012/08/14/windows-phone-performance-best-practices/
阅读主题"重绘区域"
如果UI不够流畅,你必须检查每次UI都重绘了哪些元素。你可以通过进入app . example .cs并启用重绘区域来做到这一点Application.Current.Host.Settings.EnableRedrawRegions = true;
如果某个区域或元素闪烁,说明有问题。试着添加CacheMode = " BitmapCache "
到你的元素
我在我的应用程序中有很多颜色闪烁。UI重新绘制,即我的TextBlocks,即使我没有改变它。我所要做的就是改变所有的元素(尤其是TextBlocks和grid),就像这样:
应用程序现在运行流畅。
编辑:我有一个MainViewMode,它初始化了5个其他ViewModels (MainView包含1个ContentControl,根据用户单击哪个按钮,ContentControl得到一个新的视图,视图将得到一个新的ViewModel)。因为我在启动时只加载1个视图和1个ViewModel,我已经把其他4个ViewModel的初始化在BackgroundWorker -> App启动时间是~7秒之前,现在只有2!