Frage

Ich habe anscheinend eine träge Benutzeroberfläche, wenn ich versuche, große TextBlöcke zu scrollen...
Was ist der beste Weg, um dies in WP 8.1 zu tun?

Hier ist ein Beispiel, das ich gemacht habe, um das Problem zu veranschaulichen: Wenn die App ausgeführt wird, sinkt die Framerate schrecklich.
Ich habe schon nachgeschlagen BackgroundWorker und es scheint in WP 8.1 nicht zu existieren.

Startseite.XAML

<Page
    x:Class="HTTPRequest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:HTTPRequest"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <ScrollViewer x:Name="scroll" Margin="10,13,0,10" Width="380" MaxZoomFactor="4" VerticalScrollMode="Enabled" HorizontalScrollMode="Disabled" IsTapEnabled="False">
            <TextBlock x:Name="RSSData" TextWrapping="Wrap" Text="Loading..." FontSize="22" VerticalAlignment="Top"/>

        </ScrollViewer>
        <ProgressBar x:Name="prog" Height="16" Margin="101,310,101,0" VerticalAlignment="Top" IsIndeterminate="True"/>

    </Grid>
</Page>

Startseite.XAML.ks

using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Text;
using System.Threading.Tasks;
using Windows.Data.Xml.Dom;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=391641

namespace HTTPRequest
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

            this.NavigationCacheMode = NavigationCacheMode.Required;

            Main();
        }

        private async void Main()
        {
            string results = await DownloadXMLDocument();
            prog.Visibility = Visibility.Collapsed;
            RSSData.Text = results;
        }

        public async Task<string> DownloadXMLDocument()
        {
              string URLString = "http://www.packtpub.com/rss.xml";
              Uri uri = new Uri(URLString);
              XmlDocument xmlDocument = await XmlDocument.LoadFromUriAsync(uri);
              return xmlDocument.GetXml();
        }



        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.
        /// This parameter is typically used to configure the page.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            // TODO: Prepare page for display here.

            // TODO: If your application contains multiple pages, ensure that you are
            // handling the hardware Back button by registering for the
            // Windows.Phone.UI.Input.HardwareButtons.BackPressed event.
            // If you are using the NavigationHelper provided by some templates,
            // this event is handled for you.
        }
    }
}
War es hilfreich?

Lösung

Es gibt ein bekanntes Problem mit großen Textmengen in einem einzigen TextBox.Versuchen Sie stattdessen, das zu verwenden RichTextBox und sehen Sie, ob sich Ihre Leistung verbessert.Tut mir leid, dass du ein Problem hattest.

Viel Glück!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top