Jak przypisać pionowe wyrównanie do środka tekstu w TextBlock? Znalazłem właściwość TextAlignment, ale służy ona do poziomego wyrównania tekstu. Jak to zrobić, aby wyrównać tekst w pionie?
wpf
vertical-alignment
textblock
Mrówka
źródło
źródło
TextAlignment
wpływa tylko na wyrównanie w poziomie, a nie w pionie (jak dotyczy pytania).Odpowiedzi:
Sam blok tekstowy nie może wykonywać wyrównania pionowego
Najlepszym sposobem na zrobienie tego, co znalazłem, jest umieszczenie bloku tekstu w ramce, aby ta ramka wyrównała się dla Ciebie.
Uwaga: Jest to funkcjonalnie równoważne z użyciem siatki, zależy to tylko od tego, jak chcesz, aby elementy sterujące pasowały do reszty układu, co do tego, który jest bardziej odpowiedni
źródło
Podczas gdy Orion Edwards Answer działa w każdej sytuacji, dodawanie ramki i ustawianie właściwości ramki za każdym razem może być uciążliwe. Innym szybkim sposobem jest ustawienie dopełnienia bloku tekstowego:
źródło
TextBlock nie obsługuje pionowego wyrównania tekstu.
Obejmuję ten problem, owijając blok tekstowy siatką i ustawiając HorizontalAlignment = „Stretch” i VerticalAlignment = „Center”.
Lubię to:
źródło
TextBlock
naEllipse
WewnątrzGrid
. Nie muszę wiązać moich właściwości szerokości i wysokości ani robić nic trudnego.Możesz użyć etykiety zamiast bloku tekstu.
źródło
Jeśli możesz obejść się bez zawijania tekstu , myślę, że zastąpienie TextBlock etykietą jest najbardziej zwięzłym sposobem na zrobienie tego. W przeciwnym razie postępuj zgodnie z jedną z pozostałych prawidłowych odpowiedzi.
źródło
TextBlock
nie obsługuje pionowego wyrównania jego zawartości. Jeśli musisz użyćTextBlock
, musisz wyrównać go względem jego rodzica.Jeśli jednak możesz użyć
Label
zamiast tego (i mają one bardzo podobną funkcjonalność), możesz ustawić treść tekstu:Label
Potrwają do wypełnienia swoich granic domyślnie, czyli tekst etykieta zostanie wyśrodkowany.źródło
Dla mnie
VerticalAlignment="Center"
rozwiązuje ten problem.Może to być spowodowane tym, że
TextBlock
jest on zawinięty w siatkę, ale tak samo jest praktycznie z wpf.źródło
Przekonałem się, że modyfikacja stylu pola tekstowego (tj .:),
controltemplate
a następnie modyfikacjaPART_ContentHost
wyrównania pionowego do środka, załatwi sprawęźródło
Tylko na chichot, daj temu XAMLowi wir. Nie jest doskonały, ponieważ nie jest „wyrównaniem”, ale umożliwia dostosowanie wyrównania tekstu w akapicie.
źródło
Jeśli możesz przeoczyć wysokość TextBlock, lepiej jest użyć tego:
źródło
W moim przypadku zrobiłem to, aby
TextBlock
wyświetlacz był ładniejszy.Sztuczka, aby tekst był dalej od dołu, polega na ustawieniu
źródło
Możesz zobaczyć mój post na blogu. Możesz ustawić niestandardową wysokość Textblock z kodu. Aby ustawić niestandardową wysokość, musisz ustawić ją w ramce lub w stosie
http://ciintelligence.blogspot.com/2011/02/wpf-textblock-vertical-alignment-with.html
źródło
Stwierdziłem, że muszę to zrobić nieco inaczej. Mój problem polegał na tym, że gdybym zmienił rozmiar czcionki, tekst przesuwałby się w TextBoxie zamiast pozostać na dole z resztą TextBoxów w linii. Zmieniając wyrównanie pionu z góry na dół mogłem programowo zmienić czcionkę z rozmiaru 20 na rozmiar 14 i odwrotnie, utrzymując grawitację tekstu na dole i utrzymując porządek. Oto jak:
źródło
Aby rozwinąć odpowiedź udzieloną przez @Orion Edwards, w ten sposób zrobiłbyś to w pełni od kodu (bez stylów). Zasadniczo utwórz niestandardową klasę, która dziedziczy z Border, której potomek jest ustawiony na TextBox. Poniższy przykład zakłada, że chcesz tylko pojedynczą linię i że obramowanie jest dzieckiem płótna. Zakłada również, że musisz dostosować właściwość MaxLength TextBox w oparciu o szerokość ramki. Poniższy przykład ustawia również kursor ramki naśladujący pole tekstowe, ustawiając go na typ „IBeam”. Margines „3” jest ustawiony tak, że TextBox nie jest absolutnie wyrównany do lewej krawędzi.
Klasa:
źródło
Myślę, że lepiej jest użyć Label (lub TextBlock) do Label, nie można dołączyć zdarzenia myszy bezpośrednio do kontrolki granicy, w końcu jest ono dołączone do TextBlock, to moja zalecenie:
źródło
Myślę, że rozsądnie jest używać pola tekstowego bez obramowania i tła jako łatwego i szybkiego sposobu na dotarcie do wyrównanego bloku tekstu
źródło
źródło
TextBlock
nieTextBox
. -1