Я пытаюсь использовать WrapPanel и два TextBlocks, чтобы добавить звездочку (*) к левой стороне некоторого текста, разрешить перенос текста и выровнять текст по правому краю.Я успешно сделал это, создав WrapPanel с FlowDirection, установленным в RightToLeft, и добавив свой текст, за которым следует звездочка.Тем не менее, если в тексте, который я использую, есть какие-либо не алфавитно-цифровые символы в конце строки, он необъяснимым образом переносится в начало строки.Я нахожу это поведение очень странным.Я думаю, что это должна быть ошибка в WPF, а не предполагаемое поведение.
Пример с текстом = обычный текст (другой текст):
Expected:
* Normal Text (Other
Text)
Actual:
* Normal Text (Other
(Text
Не стесняйтесь использовать следующий пример кода для воссозданиявопрос для себя.Просто поместите это в окно с высотой и шириной = 100, затем введите «Обычный текст (другой текст)» в TextBox.Или задайте для параметра «Высота и ширина» значение, которое вам понравится, и напишите достаточно текста, чтобы текст был обернут, а затем добавьте пунктуацию до конца.
Пример кода:
<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, настроенной на использование Right TextAlignment, я все равно отвечаю всем моим требованиям.Тем не менее, я обнаружил, что это интересная проблема.