Вертикальный текст в Wpf TextBlock

Можно ли отображать текст в TextBlock вертикально, чтобы все буквы были уложены друг на друга (не вращаются с помощью LayoutTransform)?

Никто еще не упомянул о очевидном и тривиальном способе укладывать буквы произвольной строки вертикально (без их вращения) с использованием чистого XAML:

  

Это просто выставляет текст вертикально, признавая тот факт, что строка является IEnumerable, и поэтому ItemsControl может обрабатывать каждый символ в строке как отдельный элемент. Панель по умолчанию для ItemsControl – это StackPanel, поэтому символы расположены вертикально.

Примечание. Для точного управления горизонтальным позиционированием, вертикальным интервалом и т. Д. Свойства ItemContainerStyle и ItemTemplate могут быть установлены в ItemsControl.

На всякий случай кто-то еще сталкивается с этим сообщением … вот простое решение 100% xaml.

        Some Text for tab 1       Some Text for tab 2   

Я не думаю, что есть такая попытка сделать это, с учетом того, как система по сути передает текст. Самым простым решением было бы изменить ширину текстового блока и предоставить несколько дополнительных свойств:

 THIS IS A TEST 

Это взломанно, но это действительно работает.

Просто используйте простой LayoutTransform ..

  

Это выполнимо:

Свойство TextAlignment TextBlock должно быть установлено в Center :

  

Затем добавьте NewLine s между каждым символом:

 textBlock1.Text = String.Join( Environment.NewLine, textBlock1.Text.Select(c => new String(c, 1)).ToArray()); 

(Использует System.Linq для создания массива строк из отдельных символов в исходной строке. Я уверен, что есть другие способы сделать это …)

принятый ответ, предложенный Ray Burns, не работает для меня на .net 4.0. Вот как я это сделал:

тянуть в mscorlib

 xmlns:s="clr-namespace:System;assembly=mscorlib" 

добавьте ресурсы usercontrol / window / page

 Sort 

и использовать его так

  

Надеюсь, поможет!

Ниже кода XAML изменяется угол текста, отображаемого в текстовом блоке.

           

создать стекную панель с кучей от текстовых блоков, которые принимают один символ

сделайте максимальную ширину текстового контейнера, чтобы разрешить только один символ и оберните текст:

  

Сделать изображение и заполнить блок изображением, использовать фотошоп или что-то, что предназначено для манипулирования текстом, а не возиться в коде?

Этот код позволяет иметь вертикальную укладку текста и горизонтальные центрированные буквы.

        

Вот способ вставить ‘\ n’ после каждого символа в тексте TextBlock, тем самым делая его отображаемым по вертикали:

  

Затем в обработчике событий Loaded вы говорите:

 TextBlock tb = sender as TextBlock; StringBuilder sb = new StringBuilder(tb.Text); int len = tb.Text.Length * 2; for (int i = 1; i < len; i += 2) { sb.Insert(i, '\n'); } tb.Text = sb.ToString(); 

Это решение было предложено Летте, но я считаю, что моя реализация требует меньших накладных расходов.

  can be used to show data in two lines 
  • Разница между Label и TextBlock
  • Как включить внешний шрифт в приложение WPF без его установки
  • WPF привязка данных к интерфейсу, а не к фактическому объекту - возможность литья?
  • Изменение цвета и шрифта для некоторой части текста в WPF C #
  • Использование диспетчера WPF в модульных тестах
  • KeyBinding в UserControl не работает, когда TextBox имеет фокус
  • WPF DataGrid: свойство CanContentScroll, вызывающее нечетное поведение
  • Как связать WPF DataGrid с переменным числом столбцов?
  • Объединение dll в один .exe с wpf
  • WPF: Как сделать автоматическое изменение размера canvasа?
  • Как я могу получить WPF EventTrigger в триггере View, если он требует диктует базовую модель Viewmodel?
  • Давайте будем гением компьютера.