Freigeben über


WinRT - RichEditBox muestra texto RTF pero sin los formatos

Básico

Algunas veces cuando cargamos documentos RTF en un RichEditBox nos llevamos la no muy grata sorpresa...Aunque se muestra el texto correctamente los formatos aplicados a este, como color, negrita, itálica, etc. no son tenidos en cuenta.

texto sin formato

Podemos abrir los RTF en editores como Wordpad y allí se muestran correctamente. Este problema se debe a que el control RichEditBox no esta preparado en TODO momento para aplicar dichos formatos.

Por esta razón no es recomendable asignar el texto del documento hasta no estar 100% seguro de que el control ha cargado en su totalidad, por ende se debe evitar cargar texto en este control en el constructor de su clase contenedora, y en su lugar hacerlo en el evento Loaded, porque de esta forma podemos garantizar que el RichTextEditor está 100% cargado, ejemplo:

 <common:LayoutAwarePage
    x:Name="pageRoot"
    x:Class="Test.GroupDetailPage"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Test"
    xmlns:data="using:Test.Data"
    xmlns:common="using:Test.Common"
    xmlns:d="https://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <RichEditBox x:Name="Richtest" Loaded="LoadedEventHandler"/>
</common:LayoutAwarePage>
 private void LoadedEventHandler(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    var cadena = @"{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\colortbl;\red255\green0\blue0;}{\cf1 Hello World }{\b nice text}{\par}}";

    rich.Document.SetText(TextSetOptions.FormatRtf, cadena);
}