C# Windows Phone-避免高资源使用率

C# Windows Phone-避免高资源使用率,c#,performance,memory-management,windows-phone-8,C#,Performance,Memory Management,Windows Phone 8,我使用Windows应用商店工具包测试了我的Windows Phone 8应用程序,但失败了。上面写着“高资源利用率”。我使用的是MVVM模式,这意味着我将视图中的元素与ViewModel属性绑定 高使用率示例:我有一个包含ContentControl的MainView。ContentControl的内容是另一个视图(我们称之为ChildView)。当我在ChildView中单击一个文本框时,InputScope会弹出(您可以在其中键入),视图会上升,这样就可以看到文本框。当视图上升时(请注意文

我使用Windows应用商店工具包测试了我的Windows Phone 8应用程序,但失败了。上面写着“高资源利用率”。我使用的是MVVM模式,这意味着我将视图中的元素与ViewModel属性绑定

高使用率示例:我有一个包含ContentControl的MainView。ContentControl的内容是另一个视图(我们称之为ChildView)。当我在ChildView中单击一个文本框时,InputScope会弹出(您可以在其中键入),视图会上升,这样就可以看到文本框。当视图上升时(请注意文本框位于轴中),它开始滞后。我不知道为什么,因为我只关注文本框,而数据透视项向上。我的问题是如何降低资源使用率?如果你需要什么,写下来,我会把它贴在这里

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>

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

数据透视通常使用大量的资源,因此当处理超过4项(取决于内容)时,我会避免使用它们


Viel Glück mit deiner应用程序。

这家伙写了一篇很棒的文章:

阅读主题“重画区域”

如果UI不平滑/不流畅,则必须检查UI每次都在重画哪些元素。您可以通过转到App.xaml.cs并启用重绘区域来完成此操作 Application.Current.Host.Settings.EnableRedrawRegions=true

如果某个区域或元素在闪烁,则表示有问题。尝试添加 CacheMode=“BitmapCache”

你的元素

我的应用程序中有很多颜色闪烁。UI重绘,即我的文本块,即使我没有更改它。我所要做的就是更改所有元素(尤其是文本块和网格),如下所示:

该应用程序现在运行流畅


编辑:我有一个MainViewMode,它初始化了5个其他视图模型(MainView包含1个ContentControl,根据用户单击的按钮,ContentControl将获得一个新视图,视图将获得一个新的ViewModel)。因为我在启动时只加载1个视图和1个视图模型,所以我将其他4个视图模型的初始化放在BackgroundWorker->应用程序启动时间之前约7秒,现在只有2秒

请出示您的代码。最好知道是wp8还是wp7。此外,我还记得一些关于用户界面必须始终具有响应性的信息,但我不确定它是否仅适用于windows8应用程序或wp8。所以,也许可以检查一下你的一些代码是否会使应用程序挂起或冻结50毫秒(这似乎是微软的神奇数字),并尝试将其最小化。也许你可以发送一些东西,并将这些长通话发送到多个帧。我使用的是Windows Phone 8,很抱歉这么说,但我完全不知道你说的是什么意思。。。当我点击一个文本框,数据透视项上升时,它似乎会“冻结”。旧代码。Scrollviewer不见了&在“Grid x:Name=“LayoutRoot”HorizontalAlignment=“Left”>”我使用了“CacheMode=“BitmapCache”->ContentControl的内容现在正在运行:)。顺便问一下,除了Pivot还有其他选择吗?比如“TabItem”?我不知道。不过,第三方可能会提供一些自定义控件。
    private string _anlohnsteuer;
    public string ANLohnsteuer
    {
        get { return _anlohnsteuer; }
        set
        {
            _anlohnsteuer = value;
            RaisePropertyChanged(() => ANLohnsteuer);
        }
    }