0

我使用 Windows Store-Kit 测试了我的 Windows Phone 8 应用程序,但它失败了。它说“高资源使用率”。我正在使用 MVVM 模式,这意味着我正在将视图中的元素与 ViewModel 属性绑定。

高使用率示例:我有一个 MainView,它有一个 ContentControl。ContentControl 的Content 是另一个View(我们称之为ChildView)。当我单击 ChildView 中的 TextBox 时,会弹出 InputScope(您可以在其中键入)并且 View 会上升,因此可以看到 TextBox。当 View 上升时(注意 TextBox 在 Pivot 中),它开始滞后。我不知道为什么,因为我只关注 TextBox 而 PivotItem 上升。我的问题是如何降低资源使用率?如果您需要任何东西,请写下来,我会在这里发布。

主页.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);
        }
    }
4

2 回答 2

1

我不确定,但您似乎正在尝试将可滚动控件放入另一个可滚动控件中。那将是一个坏主意。

Pivots 通常会使用大量资源,因此当您处理超过 4 个项目(取决于内容)时,我会避免使用它们。

Viel Glück mit deiner 应用程序。

于 2013-05-08T15:45:12.487 回答
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,而 View 将获得一个新 ViewModel)。由于我在启动时只加载了 1 个 View 和 1 个 ViewModel,我将其他 4 个 ViewModel 的初始化放在了 BackgroundWorker -> 应用程序启动时间之前约为 7 秒,现在只有 2 个!

于 2013-05-10T10:57:09.427 回答