Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ovládací prvek RichEditBox můžete použít k zadávání a úpravám dokumentů ve formátu RTF, které obsahují formátovaný text, hypertextové odkazy, obrázky, matematické rovnice a další formátovaný obsah. RichEditBox můžete nastavit jen pro čtení nastavením jeho IsReadOnly vlastnost true.
Je to správná kontrola?
K zobrazení a úpravám textových souborů použijte RichEditBox. K získání uživatelského vstupu do aplikace nepoužíváte RichEditBox způsob, jakým používáte jiná standardní textová vstupní pole. Místo toho ho použijete k práci s textovými soubory, které jsou oddělené od vaší aplikace. Text zadaný do RichEditBoxu se obvykle ukládá do .rtf souboru.
- Pokud je primárním účelem víceřádkového textového pole vytváření dokumentů jen pro čtení (například položky blogu nebo obsah e-mailové zprávy) a tyto dokumenty vyžadují formátovaný text, použijte místo toho blok formátovaného textu .
- Při zachytávání textu, který se bude používat pouze a nebude se znovu přehrávat uživatelům, použijte ovládací prvek pro zadávání ve formátu prostého textu.
- Pro všechny ostatní scénáře použijte ovládací prvek pro zadávání ve formátu prostého textu.
Další informace o výběru správného ovládacího prvku textu najdete v článku Ovládací prvky textu .
Recommendations
- Při vytváření bohatého textového pole poskytněte tlačítka pro stylizaci a implementujte jejich akce.
- Použijte písmo, které je konzistentní se stylem vaší aplikace.
- Nastavte výšku textového pole tak, aby bylo dostatečně vysoké pro typické vstupy.
- Nenechte ovládací prvky pro zadávání textu narůstat na výšku, když uživatelé zadávají.
- Nepoužívejte víceřádkové textové pole, pokud uživatelé potřebují jenom jeden řádek.
- Nepoužívejte ovládací prvek pro formátovaný text, pokud je ovládací prvek prostého textu dostačující.
Examples
V tomto editoru s podporou formátovaného textu je otevřen dokument s formátovaným textem. Formátování a tlačítka pro práci se soubory nejsou součástí editoru s pokročilými možnostmi, ale přesto byste měli poskytnout alespoň minimální sadu tlačítek pro způsob stylizace a implementovat jejich funkce.
Vytvořit pole pro formátované úpravy
- Důležitá rozhraní API:RichEditBox – třída, vlastnost Document, IsReadOnly – vlastnost, IsSpellCheckEnabled – vlastnost
![]()
Aplikace Galerie WinUI 3 obsahuje interaktivní příklady ovládacích prvků a funkcí WinUI. Získejte aplikaci z Microsoft Store nebo vyhledejte zdrojový kód na GitHub.
Ve výchozím nastavení RichEditBox podporuje kontrolu pravopisu. Chcete-li zakázat kontrolu pravopisu, nastavte IsSpellCheckEnabled vlastnost false. Další informace najdete v článku Pokyny pro kontrolu pravopisu .
K získání jeho obsahu použijete vlastnost Document prvku RichEditBox. Obsah RichEditBox je ITextDocument objekt, na rozdíl od RichTextBlock ovládacího prvku, který používá Block objekty jako jeho obsah. Rozhraní ITextDocument poskytuje způsob, jak načíst a uložit dokument do datového proudu, načíst rozsahy textu, získat aktivní výběr, vrátit zpět a znovu změny, nastavit výchozí atributy formátování atd.
Tento příklad ukazuje, jak upravovat, načítat a ukládat soubor ve formátu RTF (.rtf) do RichEditBoxu.
<RelativePanel Margin="20" HorizontalAlignment="Stretch">
<RelativePanel.Resources>
<Style TargetType="AppBarButton">
<Setter Property="IsCompact" Value="True"/>
</Style>
</RelativePanel.Resources>
<AppBarButton x:Name="openFileButton" Icon="OpenFile"
Click="OpenButton_Click" ToolTipService.ToolTip="Open file"/>
<AppBarButton Icon="Save" Click="SaveButton_Click"
ToolTipService.ToolTip="Save file"
RelativePanel.RightOf="openFileButton" Margin="8,0,0,0"/>
<AppBarButton Icon="Bold" Click="BoldButton_Click" ToolTipService.ToolTip="Bold"
RelativePanel.LeftOf="italicButton" Margin="0,0,8,0"/>
<AppBarButton x:Name="italicButton" Icon="Italic" Click="ItalicButton_Click"
ToolTipService.ToolTip="Italic" RelativePanel.LeftOf="underlineButton" Margin="0,0,8,0"/>
<AppBarButton x:Name="underlineButton" Icon="Underline" Click="UnderlineButton_Click"
ToolTipService.ToolTip="Underline" RelativePanel.AlignRightWithPanel="True"/>
<RichEditBox x:Name="editor" Height="200" RelativePanel.Below="openFileButton"
RelativePanel.AlignLeftWithPanel="True" RelativePanel.AlignRightWithPanel="True"/>
</RelativePanel>
private async void OpenButton_Click(object sender, RoutedEventArgs e)
{
// Open a text file.
Windows.Storage.Pickers.FileOpenPicker open =
new Windows.Storage.Pickers.FileOpenPicker();
open.SuggestedStartLocation =
Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary;
open.FileTypeFilter.Add(".rtf");
Windows.Storage.StorageFile file = await open.PickSingleFileAsync();
if (file != null)
{
try
{
Windows.Storage.Streams.IRandomAccessStream randAccStream =
await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
// Load the file into the Document property of the RichEditBox.
editor.Document.LoadFromStream(Windows.UI.Text.TextSetOptions.FormatRtf, randAccStream);
}
catch (Exception)
{
ContentDialog errorDialog = new ContentDialog()
{
Title = "File open error",
Content = "Sorry, I couldn't open the file.",
PrimaryButtonText = "Ok"
};
await errorDialog.ShowAsync();
}
}
}
private async void SaveButton_Click(object sender, RoutedEventArgs e)
{
Windows.Storage.Pickers.FileSavePicker savePicker = new Windows.Storage.Pickers.FileSavePicker();
savePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary;
// Dropdown of file types the user can save the file as
savePicker.FileTypeChoices.Add("Rich Text", new List<string>() { ".rtf" });
// Default file name if the user does not type one in or select a file to replace
savePicker.SuggestedFileName = "New Document";
Windows.Storage.StorageFile file = await savePicker.PickSaveFileAsync();
if (file != null)
{
// Prevent updates to the remote version of the file until we
// finish making changes and call CompleteUpdatesAsync.
Windows.Storage.CachedFileManager.DeferUpdates(file);
// write to file
Windows.Storage.Streams.IRandomAccessStream randAccStream =
await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
editor.Document.SaveToStream(Windows.UI.Text.TextGetOptions.FormatRtf, randAccStream);
// Let Windows know that we're finished changing the file so the
// other app can update the remote version of the file.
Windows.Storage.Provider.FileUpdateStatus status = await Windows.Storage.CachedFileManager.CompleteUpdatesAsync(file);
if (status != Windows.Storage.Provider.FileUpdateStatus.Complete)
{
Windows.UI.Popups.MessageDialog errorBox =
new Windows.UI.Popups.MessageDialog("File " + file.Name + " couldn't be saved.");
await errorBox.ShowAsync();
}
}
}
private void BoldButton_Click(object sender, RoutedEventArgs e)
{
Windows.UI.Text.ITextSelection selectedText = editor.Document.Selection;
if (selectedText != null)
{
Windows.UI.Text.ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
charFormatting.Bold = Windows.UI.Text.FormatEffect.Toggle;
selectedText.CharacterFormat = charFormatting;
}
}
private void ItalicButton_Click(object sender, RoutedEventArgs e)
{
Windows.UI.Text.ITextSelection selectedText = editor.Document.Selection;
if (selectedText != null)
{
Windows.UI.Text.ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
charFormatting.Italic = Windows.UI.Text.FormatEffect.Toggle;
selectedText.CharacterFormat = charFormatting;
}
}
private void UnderlineButton_Click(object sender, RoutedEventArgs e)
{
Windows.UI.Text.ITextSelection selectedText = editor.Document.Selection;
if (selectedText != null)
{
Windows.UI.Text.ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
if (charFormatting.Underline == Windows.UI.Text.UnderlineType.None)
{
charFormatting.Underline = Windows.UI.Text.UnderlineType.Single;
}
else {
charFormatting.Underline = Windows.UI.Text.UnderlineType.None;
}
selectedText.CharacterFormat = charFormatting;
}
}
Použití bohatého textového pole pro matematické rovnice
RichEditBox může zobrazovat a upravovat matematické rovnice pomocí UnicodeMath. Rovnice se ukládají a načítají ve formátu MathML 3.0 .
Ve výchozím nastavení ovládací prvek RichEditBox neinterpretuje vstup jako matematiku. Chcete-li povolit matematický režim, zavolejte SetMathMode na vlastnosti TextDocument a předání hodnoty RichEditMathMode.MathOnly (chcete-li zakázat matematický režim, zavolejte SetMathMode a předat hodnotu NoMath).
richEditBox.TextDocument.SetMathMode(Microsoft.UI.Text.RichEditMathMode.MathOnly);
To umožňuje automatické rozpoznání a převod vstupu UnicodeMath na MathML v reálném čase. Například zadáním 4^2 se převede na 42 a 1/2 se převede na 1/2. Další příklady najdete v aplikaci Galerie WinUI 3 .
Chcete-li uložit matematický obsah textového pole s bohatým textem jako řetězec MathML, zavolejte GetMathML.
richEditBox.TextDocument.GetMathML(out String mathML);
Chcete-li nastavit matematický obsah bohatého textového pole, zavolejte SetMathML a předejte řetězec MathML.
Volba správné klávesnice pro ovládací prvek textu
Pokud chcete uživatelům pomoct zadat data pomocí dotykové klávesnice nebo siP (Soft Input Panel), můžete nastavit rozsah zadávání ovládacího prvku textu tak, aby odpovídal druhu dat, která má uživatel zadat. Výchozí rozložení klávesnice je obvykle vhodné pro práci s dokumenty ve formátu RTF.
Další informace o tom, jak používat vstupní obory, najdete v tématu Použití vstupního oboru ke změně dotykové klávesnice.
Související články
- ovládací prvky textu
- Pokyny pro kontrolu pravopisu
- Pokyny pro zadávání textu
- Třída TextBox
- Třída PasswordBox
Windows developer