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);
        }
    }

Windows Phone -避免高资源使用

我不确定,但似乎你试图把一个可滚动控件到另一个可滚动控件。那是个坏主意。

pivot通常会使用很多资源,所以当你处理超过4个项目时(取决于内容),我会避免使用它们。

Viel gl ck mit deiner App

这家伙的文章很棒:

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!