Я пытаюсь использовать WrapPanel и два TextBlocks, чтобы добавить звездочку (*) в левую часть некоторого текста, разрешить обтекание текста и принудительно выравнивать текст. Я успешно сделал это, создав WrapPanel с FlowDirection, установленным в RightToLeft, и добавив свой текст, а затем звездочку. Однако, если в тексте, который я использую, есть какие-либо не-буквенно-цифровые символы в конце строки, он необъяснимо принужден к фронту линии. Я считаю это поведение очень странным. Я думаю, что это ошибка в WPF и не предназначенное поведение.Использование WPF WrapPanel для обтекания и выравнивания текста - ошибка WPF?
Пример с текстом = Обычный текст (Другое Текст):
Expected:
* Normal Text (Other
Text)
Actual:
* Normal Text (Other
(Text
Вы можете использовать следующий код, чтобы воссоздать этот вопрос для себя. Просто поместите это в окно с Height и Width = 100, затем введите «Normal Text (Другой текст)» в TextBox. Или, установите Height и Width на все, что вам нравится, и напишите достаточно текста, чтобы он принудительно обернул текст, а затем добавьте пунктуацию до конца.
Пример кода:
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox Name="input" />
<WrapPanel Grid.Row="2" FlowDirection="RightToLeft">
<TextBlock Text="{Binding ElementName=input, Path=Text}" TextWrapping="Wrap"/>
<TextBlock Text="*" Margin="0,0,3,0"/>
</WrapPanel>
</Grid>
Итак, мой вопрос (ы).
- Это ошибка, или это предназначено?
- Если это ошибка, я должен каким-то образом передать ее Microsoft? Как?
Начиная с этого поста, я решил поместить два текстовых блока в сетку с двумя столбцами. Если не-звездочка, содержащая TextBlock, настроенная для использования права TextAlignment, я все равно отвечаю всем моим требованиям. Тем не менее, я нашел это интересной проблемой.
Отлично работает! Как это часто бывает со сложной логикой, например, с RightToLeft FlowDirection, есть гораздо более простой способ сделать это. Мне нравится это лучше, чем сетка, которую я описал. Стоит ли мне сообщать о нечетном поведении Microsoft? – Drew
@Drew Похоже, что это ожидаемое поведение. Как я уже сказал, на самом деле я ничего не знаю об этом, но немного Гуглинг нашел эту ссылку: http://www.i18nguy.com/markup/right-to-left.html –
Я не могу сказать, что я действительно понять правила изменения языка слева направо на право-налево, но я продал, что это было предназначено для поведения. Отлично сработано. – Drew