Jak dodać podział wiersza do tekstu, gdy jest on ustawiany jako atrybut, tj .:
<TextBlock Text="Stuff on line1 \n Stuff on line2" />
Rozbicie go na rozbity format nie jest opcją dla mojej szczególnej sytuacji. Potrzebuję jakiegoś sposobu naśladowania:
<TextBlock>
<TextBlock.Text>
Stuff on line1 <LineBreak/>
Stuff on line2
</TextBlock.Text>
<TextBlock/>
Być może możesz użyć atrybutu xml: space = "preserve" do zachowania białych znaków w źródłowym XAML
źródło
xml:space="preserve"
zostaną również wcięcia, które zwykle są obecne w XAML. Zatem wyraźne,<LineBreak />
jak sugerowano powyżej, wydaje się czystszym rozwiązaniem.Gdy musisz to zrobić w postaci ciągu (np .: w swoich zasobach), musisz użyć
xml:space="preserve"
i znaków znaków handlowego :Lub dosłowne znaki nowej linii w tekście:
Ostrzeżenie: jeśli piszesz kod jak w drugim przykładzie włożona albo nowej linii lub powrotu karetki i nowej linii, w zależności od zakończeń linii systemu operacyjnego i / lub tekstu wykorzystania edytora. Na przykład, jeśli napiszesz to i powierzysz to gitowi z systemu Linux, wszystko może wydawać się w porządku - ale jeśli ktoś sklonuje go do systemu Windows, git przekonwertuje zakończenia linii na
\r\n
i, w zależności od tego, do czego służy twój ciąg ... może rozbić świat.Pamiętaj o tym, zachowując białe znaki. Jeśli napiszesz coś takiego:
Dodałeś cztery podziałki linii, być może cztery znaki powrotu karetki i potencjalnie końcowe białe znaki, które są niewidoczne ...
źródło
xml:space="preserve"
atrybut również doResourceDictionary
, abyś nie musiał stosować go do każdego łańcucha zasobów.<System:String x:Key="TwoLiner" xml:space="preserve">First line Second line</System:String>
(z przerwą między pierwszą linią a drugą linią)xml:space="preserve"
Musisz po prostu usunąć
<TextBlock.Text>
i po prostu dodać treść w następujący sposób:źródło
Pamiętaj, że aby to zrobić, musisz to zrobić w atrybucie Tekst, którego nie możesz użyć w treści
źródło
Może ktoś woli
z
xmlns:s="clr-namespace:System;assembly=mscorlib"
.źródło
Dla tych, którzy wypróbowali każdą odpowiedź na to pytanie i wciąż drapią się po głowie, dlaczego żadne z nich nie działa dla ciebie, być może natknąłeś się na jakiś problem, na który wpadłem.
Moja
TextBlock.Text
właściwość znajdowała się wToolTipService.ToolTip
elemencie i była połączona z właściwością obiektu, którego dane były pobierane z procedury składowanej SQL. Teraz dane z tej konkretnej właściwości w ramach procedury składowanej były pobierane z funkcji SQL.Ponieważ nic dla mnie nie zadziałało, zrezygnowałem z wyszukiwania i utworzyłem klasę konwertera poniżej:
Skończyło się na tym, że musiałem użyć
Enivornment.NewLine
metody z odpowiedzi @ dparker . Poinstruowałem konwerter, aby szukał możliwej reprezentacji tekstowej nowego wiersza i zastąpił goEnvironment.NewLine
.To działało!
Nadal jednak byłem zakłopotany, dlaczego żadna z pozostałych metod nie działa z właściwościami bazy danych.
Zostawiłem komentarz do zaakceptowanej odpowiedzi @ BobKing :
Odpowiedział:
Żarówka zgasła!
Przeszedłem do mojej funkcji SQL, zastąpiłem moje reprezentacje tekstowe znaków nowej linii ...
... usunąłem konwerter z mojego
TextBlock.Text
wiązania i po prostu ... zadziałało!źródło
Znalazłem to pomocne, ale napotkałem kilka błędów podczas dodawania go do tagu „Content = ...” w XAML.
Miałem wiele wierszy w treści, a później dowiedziałem się, że treść zawiera białe spacje, chociaż tego nie określiłem. więc aby obejść ten problem i „ignorować” białe znaki, zaimplementowałem takie jak to.
mam nadzieję, że to pomaga komuś innemu.
(Dane wyjściowe zawierają trzy linie tekstu z pustą linią pomiędzy nimi.)
źródło
Zdaję sobie sprawę, że dotyczy to starszego pytania, ale chciałem to dodać
działa również, jeśli robi to poprzez kod.
źródło
nie jest ważne, aby wiedzieć, ale to, co określasz między znacznikami TextBlock, nazywa się treścią wbudowaną i przechodzi do właściwości TextBlock.Inlines, która jest kolekcją InlineCollection i zawiera elementy typu Inline. Podklasy Inline to między innymi Run i LineBreak. patrz TextBlock.Inlines
źródło
Też nie działa z
Nic wielkiego, wystarczyło użyć
zamiast.
źródło
źródło
Kod odpowiedzialny za rozwiązanie
źródło