Best way to handle UI performance issues in Windows Phone 8.1

c#, windows-phone-8.1, winrt-xaml

Solution

There is a known issue with large quantities of text in a single `TextBox`. Instead try using the `RichTextBox` and see if your performance improves. Sorry you had a problem.

Best of luck!

Problem

I seem to have a sluggish UI when trying to scroll any large TextBlocks... What's the best way to go about this in WP 8.1? Here's an example I made to illustrate the issue, notice when the app is ran the framerate drops horribly. I've already looked up `BackgroundWorker` and it doesn't seem to exist in WP 8.1. MainPage.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> ``` MainPage.xaml.cs ``` 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. } } } ```

Original source

Related problems