Jaka jest różnica między elementem WPF TextBlock a kontrolą etykiety? [duplikat]

To pytanie ma już odpowiedź tutaj:

Wizualnie oba poniższe urywki tworzą ten sam interfejs użytkownika. Więc dlaczego są tam 2 kontrole..
Snippet1

<TextBlock>Name:</TextBlock>
<TextBox Name="nameTextBox" />

Snippet2

<Label>Name:</Label>
<TextBox Name="nameTextBox" />

(sam na to odpowiem... myślałem, że jest to przydatne ciekawostkę nauczyłem się dzisiaj z programowania WPF)

 99
wpf
Author: user7116, 2008-09-12

6 answers

WPF Textblock dziedziczy z Framework zamiast z Systemu.Okna.Control podobnie jak Label Control. Oznacza to, że blok tekstowy jest znacznie bardziej lekki. Minusem korzystania z textblock jest brak obsługi klawiszy Access / Accerelator i nie ma łącza do innych kontrolek jako cel.

Jeśli chcesz sam wyświetlać tekst, użyj TextBlock. Zaletą jest lekki, wydajny sposób wyświetlania tekst.

jeśli chcesz powiązać tekst z inną kontrolką, np. pole tekstowe, użyj kontrolki Etykieta. Korzyści to klucze dostępu i odniesienia do kontroli celu.

 109
Author: Alan Le,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-05 00:26:46

Etykieta ma ważną obsługę ostrości odpowiedzialność.Jego celem jest umożliwienie umieszczenia podpisu za pomocą klucza dostępu. Posiada właściwość Target , która wskazuje cel klucza dostępu. W ten sposób...

<Label Target="{Binding ElementName=nameTextBox}">_Name:</Label>
<TextBox x:Name="nameTextBox" />

W przypadku braku właściwości Target, Kontrola etykiety nie robi nic użytecznego. Po naciśnięciu klawisza dostępu "nie można przetworzyć żądania" usłyszysz sygnał dźwiękowy]}

 20
Author: Gishu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-12 14:21:03

Dwa największe powody nieporozumień dotyczących blokad tekstowych i etykiet to Windows Forms i zdrowy rozsądek.

  1. Gdy chciałeś umieścić mały fragment tekstu na formularzu w Windows Forms, użyłeś etykiety, więc wynika (niepoprawnie), że zrobiłeś to samo z etykietą WPF.

  2. Zdrowy rozsądek doprowadziłby do przekonania, że etykieta jest lekka, a Blok tekstowy Nie, gdy jest odwrotnie.

Zauważ, że możesz umieścić Blok tekstowy wewnątrz etykiety.

 3
Author: Jon Crowell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-06 05:36:16

Z TextBlock możemy łatwo mieć wsparcie Wielowierszowe, jak sądzę - używając TextWrapping.

Używanie Label w takich przypadkach, np. wyświetlanie komunikatu o walidacji, wymaga użycia znaczników <AccessKey>, które są mniej proste niż TextBlock.

Z drugiej strony, użycie TextBlock nie pozwala nam ustawić właściwości BorderBrush.

Więc, dla mnie, te dwie kontrolki powinny być połączone w kontrolę pełnoekranową.

 2
Author: Nam G VU,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-30 13:59:10

Label pobiera wszelkiego rodzaju dane wejściowe, takie jak String, Number itp... TextBlock, jak sama nazwa wskazuje, akceptuje tylko ciąg tekstowy.

 2
Author: iYadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-13 20:34:22

Etykieta może być używana jako alternatywa dla TextBlock w sytuacjach, w których wymagana jest minimalna obsługa tekstu, np. etykieta dla kontrolki. Korzystanie z etykiety może być korzystne, ponieważ wymaga jeszcze mniej zasobów (lżejszej wagi) niż blok tekstowy.

 -8
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-09 12:13:58