blok Text
Text blok jest podstawową kontrolą do wyświetlania tekstu w trybie tylko do odczytu w aplikacjach. Można go użyć do wyświetlania tekstu jednowierszowego lub wielowierszowego, hiperlinków wbudowanych i tekstu z formatowaniem, takimi jak pogrubienie, kursywa lub podkreślenie.
Czy jest to właściwa kontrola?
Blok tekstu jest zwykle łatwiejszy w użyciu i zapewnia lepszą wydajność renderowania tekstu niż blok tekstu sformatowanego, dlatego jest preferowany dla większości tekstu interfejsu użytkownika aplikacji. Możesz łatwo uzyskać dostęp do tekstu i używać go z bloku tekstowego w aplikacji, uzyskując wartość właściwości Text. Udostępnia również wiele z tych samych opcji formatowania w celu dostosowania sposobu renderowania tekstu.
Mimo że można umieścić podziały wierszy w tekście, blok tekstu jest przeznaczony do wyświetlania pojedynczego akapitu i nie obsługuje wcięcia tekstu. Użyj RichTextBlock, gdy potrzebujesz obsługi wielu akapitów, tekstu wielokolumna lub innych złożonych układów tekstu lub wbudowanych elementów interfejsu użytkownika, takich jak obrazy.
Aby uzyskać więcej informacji na temat wybierania właściwej kontrolki tekstu, zobacz artykuł Text controls (Kontrolki).
Tworzenie bloku tekstowego
- ważne interfejsy API:TextBlock klasy, właściwośćText, właściwośćInlines
Aplikacja z galerii WinUI 3 zawiera interaktywne przykłady większości kontrolek, funkcji i funkcji interfejsu WinUI 3. Pobierz aplikację ze sklepu Microsoft Store lub pobierz kod źródłowy w witrynie GitHub
Poniżej przedstawiono sposób definiowania prostej kontrolki TextBlock i ustawiania jej właściwości Text
na ciąg.
<TextBlock Text="Hello, world!" />
TextBlock textBlock1 = new TextBlock();
textBlock1.Text = "Hello, world!";
Model zawartości
Istnieją dwie właściwości, których można użyć do dodawania zawartości do TextBlock: Text i Inlines.
Najczęstszym sposobem wyświetlania tekstu jest ustawienie właściwości Text
na wartość ciągu, jak pokazano w poprzednim przykładzie.
Możesz również dodać treści, umieszczając elementy inline flow w właściwości Inlines
w następujący sposób. (Inlines
jest domyślną właściwością zawartości TextBlock, więc nie musisz jawnie dodawać jej w języku XAML).
<TextBlock>Text can be <Bold>bold</Bold>, <Underline>underlined</Underline>,
<Italic>italic</Italic>, or a <Bold><Italic>combination</Italic></Bold>.</TextBlock>
Elementy pochodzące z klasy Inline, takie jak Bold, Italic, Run, Spani LineBreak, umożliwiają różne formatowanie dla różnych części tekstu. Aby uzyskać więcej informacji, zobacz sekcję Formatowanie tekstu. Wbudowany element Hiperłącze umożliwia dodanie hiperlinku do tekstu. Jednak użycie Inlines
wyłącza również szybkie renderowanie tekstu ścieżki, które zostało omówione w następnej sekcji.
Zagadnienia dotyczące wydajności
Jeśli to możliwe, język XAML używa bardziej wydajnej ścieżki kodu do układu tekstu. Ta szybka ścieżka zmniejsza ogólne użycie pamięci i znacznie skraca czas procesora na mierzenie i układanie tekstu. Ta szybka ścieżka ma zastosowanie tylko do TextBlock, więc powinna być preferowana nad RichTextBlock, jeśli to możliwe.
Pewne okoliczności wymagają, aby TextBlock powrócił do bardziej rozbudowanej i intensywniejszej pod względem zużycia CPU ścieżki kodu do renderowania tekstu. Aby zachować renderowanie tekstu na szybkiej ścieżce, pamiętaj, aby postępować zgodnie z tymi wytycznymi podczas ustawiania właściwości wymienionych tutaj.
-
Text: Najważniejszym warunkiem jest to, że szybka ścieżka jest używana tylko podczas ustawiania tekstu przez jawne ustawienie właściwości
Text
w języku XAML lub w kodzie (jak pokazano w poprzednich przykładach). Ustawienie tekstu za pomocą kolekcjiInlines
TextBlock(na przykład<TextBlock>Inline text</TextBlock>
) spowoduje wyłączenie szybkiej ścieżki ze względu na potencjalną złożoność wielu formatów. - OdstępZnaków: tylko domyślna wartość 0 jest szybką ścieżką.
-
TextTrimming: tylko wartości
None
,CharacterEllipsis
iWordEllipsis
są szybką ścieżką. WartośćClip
wyłącza szybką ścieżkę.
Notatka
Tylko platforma UWP: Przed systemem Windows 10, wersja 1607, dodatkowe właściwości również mają wpływ na szybką ścieżkę. Jeśli aplikacja jest uruchamiana we wcześniejszej wersji systemu Windows, te warunki spowodują renderowanie tekstu na powolnej ścieżce. Aby uzyskać więcej informacji na temat wersji, zobacz Kod adaptacyjny wersji.
-
Typografia: tylko domyślne wartości różnych właściwości
Typography
są szybką ścieżką. -
LineStackingStrategy: Jeśli LineHeight nie jest równy 0, wartości
BaselineToBaseline
iMaxHeight
dezaktywują szybką ścieżkę. -
IsTextSelectionEnabled: tylko
false
to szybka ścieżka. Ustawienie tej właściwości natrue
wyłącza szybką ścieżkę.
Możesz ustawić właściwość DebugSettings.IsTextPerformanceVisualizationEnabled na true
podczas debugowania, aby określić, czy tekst używa renderowania szybką ścieżką. Gdy ta właściwość jest ustawiona na true
, tekst, który znajduje się na szybkiej ścieżce, jest wyświetlany w jasnozielonym kolorze.
Zazwyczaj ustawienia debugowania są ustawiane w przesłoniętej metodzie OnLaunched w pliku z kodem-behind dla App.xaml
, jak w tym przykładzie.
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
#if DEBUG
if (System.Diagnostics.Debugger.IsAttached)
{
this.DebugSettings.IsTextPerformanceVisualizationEnabled = true;
}
#endif
// ...
}
W tym przykładzie pierwsza TextBlock jest renderowana przy użyciu szybkiej ścieżki, a druga nie.
<StackPanel>
<TextBlock Text="This text is on the fast path."/>
<TextBlock>This text is NOT on the fast path.</TextBlock>
<StackPanel/>
Po uruchomieniu tego kodu XAML w trybie debugowania z IsTextPerformanceVisualizationEnabled ustawioną na true
, wynik wygląda następująco.
Ostrożność
Kolor tekstu, który nie znajduje się na szybkiej ścieżce, nie jest zmieniany. Jeśli masz tekst w aplikacji z określonym kolorem jasnozielonym, jest on nadal wyświetlany w kolorze jasnozielonym, gdy znajduje się na wolniejszej ścieżce renderowania. Należy zachować ostrożność, aby nie mylić tekstu ustawionego na zielony w aplikacji z tekstem, który znajduje się w szybkiej ścieżce i kolorze zielonym ze względu na ustawienia debugowania.
Formatowanie tekstu
Mimo że właściwość Text przechowuje zwykły tekst, można zastosować różne opcje formatowania do kontrolki TextBlock, aby dostosować sposób renderowania tekstu w aplikacji. Można ustawić standardowe właściwości kontrolki, takie jak FontFamily, FontSize, FontStyle, pierwszego planui CharacterSpacing, aby zmienić wygląd tekstu. Możesz również użyć wbudowanych elementów tekstowych i typografii dołączonych właściwości, aby sformatować tekst. Te opcje mają wpływ tylko na sposób, w jaki TextBlock wyświetla tekst lokalnie, więc jeśli skopiujesz i wklejesz tekst do kontrolki tekstu sformatowanego, na przykład nie zastosowano żadnego formatowania.
Notatka
Pamiętaj, że jak wspomniano w poprzedniej sekcji, wbudowane elementy tekstowe i wartości typografii innej niż domyślna nie są renderowane na szybkiej ścieżce.
Inline elementów
Przestrzeń nazw Microsoft.UI.Xaml.Documents zawiera różne wbudowane elementy tekstowe, których można użyć do formatowania tekstu, takich jak Bold, Italic, Run, Spani LineBreak.
Serię ciągów można wyświetlić w TextBlock, gdzie każdy ciąg ma inne formatowanie. W tym celu można użyć elementu Run
, aby wyświetlić każdy ciąg z formatowaniem i oddzielając każdy element Run
elementem LineBreak
.
Poniżej przedstawiono sposób definiowania kilku inaczej sformatowanych ciągów tekstowych w TextBlock przy użyciu obiektów Run
oddzielonych LineBreak
.
<TextBlock FontFamily="Segoe UI" Width="400" Text="Sample text formatting runs">
<LineBreak/>
<Run Foreground="Gray" FontFamily="Segoe UI Light" FontSize="24">
Segoe UI Light 24
</Run>
<LineBreak/>
<Run Foreground="Teal" FontFamily="Georgia" FontSize="18" FontStyle="Italic">
Georgia Italic 18
</Run>
<LineBreak/>
<Run Foreground="Black" FontFamily="Arial" FontSize="14" FontWeight="Bold">
Arial Bold 14
</Run>
</TextBlock>
Oto wynik.
Typografia
Dołączone właściwości klasy Typography zapewniają dostęp do zestawu właściwości typografii Microsoft OpenType. Te dołączone właściwości można ustawić na TextBlocklub na poszczególnych elementach tekstowych w linii. Te przykłady pokazują oba te elementy.
<TextBlock Text="Hello, world!"
Typography.Capitals="SmallCaps"
Typography.StylisticSet4="True"/>
TextBlock textBlock1 = new TextBlock();
textBlock1.Text = "Hello, world!";
Typography.SetCapitals(textBlock1, FontCapitals.SmallCaps);
Typography.SetStylisticSet4(textBlock1, true);
<TextBlock>12 x <Run Typography.Fraction="Slashed">1/3</Run> = 4.</TextBlock>
UwP i WinUI 2
Ważny
Informacje i przykłady przedstawione w tym artykule są zoptymalizowane pod kątem aplikacji, które korzystają z zestawu Windows App SDK i WinUI 3, ale mają zastosowanie również do aplikacji platformy UWP korzystających z interfejsu WinUI 2. Zobacz dokumentację interfejsu API platformy UWP, aby uzyskać informacje i przykłady dotyczące platformy.
Ta sekcja zawiera informacje potrzebne do używania kontrolki w aplikacji platformy UWP lub WinUI 2.
API dla tej kontrolki istnieją w przestrzeni nazw Windows.UI.Xaml.Controls.
- interfejsy API platformy UWP: klasaTextBlock, właściwość Text, właściwość Inlines
- Otwórz aplikację Galerii WinUI 2 i zobacz TextBlock w akcji. Aplikacja z galerii WinUI 2 zawiera interaktywne przykłady większości kontrolek, funkcji i funkcji winUI 2. Pobierz aplikację ze sklepu Microsoft Store lub pobierz kod źródłowy w witrynie GitHub.
Zalecamy użycie najnowszych WinUI 2, aby uzyskać najbardziej aktualne style, szablony i funkcje dla wszystkich kontrolek.