Я преобразовываю XML из DrawingML в XAML. К сожалению, XAML не работает должным образом с пробелами, но я нашел обходной путь. Вот проблема:
Положение о проблеме
Я хочу написать следующее в TextBlock:
Привет Джон , что Суши А сказал
Суши Б?
Так я бы написал:
<TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run>
<Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
Это не дает желаемых результатов. Вместо этого он выдает:
Привет Джон , Что Суши А сказал
Суши Б?
Заметили расстояние между "John
" и ",
"? Странно, а? Это потому, что XAML добавляет пробел между прогонами. Я не знаю, почему это так. Мне действительно нужно форматирование точно так же, как указано выше, поэтому вариант изменения форматирования, например, выделение жирным шрифтом запятой, тоже не подходит.
Частичное решение
Более странно то, что есть способ обойти это, то есть потерять дополнительное пространство, которое добавляет XAML, - вы должны поставить свои прогоны на одной линии. Понятия не имею почему, но это так. Таким образом, следующее на самом деле работает просто отлично:
<TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run><Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
Обратите внимание, что прогоны # 2 и # 3 (из 4 прогонов) теперь находятся на одной линии.
Вопрос
Проблема, с которой я столкнулся, заключается в том, что я не нашел способа написать вышеизложенное с использованием XML-литералов. Если я попробую это:
Dim tb = <TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run><Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
это всегда , созданное как показано ниже, с 4 сериями на отдельных строках:
<TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run>
<Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
Кто-нибудь знает, как XML можно написать точно так же, как написано в XML-литералах?
Бонус
Если вы ответите правильно на вопрос, я расскажу вам изюминку шутки:)