gpt4 book ai didi

wpf - 使用 WPF WrapPanel 环绕和右对齐文本 - WPF 错误?

转载 作者:行者123 更新时间:2023-12-04 23:53:11 38 4
gpt4 key购买 nike

我正在尝试使用 WrapPanel 和两个 TextBlock 将星号 (*) 附加到某些文本的左侧,允许文本换行,并强制文本右对齐。通过创建一个 FlowDirection 设置为 RightToLeft 的 WrapPanel 并添加我的文本,然后是星号,我已经成功地做到了这一点。但是,如果我使用的文本碰巧在行尾有任何非字母数字字符,它会莫名其妙地被强制到行的前面。我觉得这种行为很奇怪。我认为这一定是 WPF 中的错误,而不是预期的行为。

文本示例 = 普通文本(其他文本):

Expected:
* Normal Text (Other
Text)
Actual:
* Normal Text (Other
(Text

您可以随意使用以下示例代码自行重现问题。只需将它放在高度和宽度 = 100 的窗口中,然后在文本框中键入“普通文本(其他文本)”。或者,将高度和宽度设置为您喜欢的任何值,并编写足够多的文本以强制将文本换行,然后在末尾添加标点符号。

示例代码:

<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 放在两列网格中。将包含非星号的 TextBlock 配置为使用 Right TextAlignment,无论如何我都能满足我的所有要求。不过,我发现这是一个有趣的问题。

最佳答案

试试这个:

<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox Name="input" />
<WrapPanel Grid.Row="2" HorizontalAlignment="Right" >
<TextBlock Text="*" Margin="0,0,3,0"/>
<TextBlock Text="{Binding ElementName=input, Path=Text}" TextWrapping="Wrap"/>

</WrapPanel>
</Grid>

FlowDirection 用于支持从右到左阅读的语言。由于我不知道此类语言的规则,因此我不会假装理解您为什么会看到自己的样子,或者它是否是错误。也就是说,我知道更改 FlowDirection 不是处理从左到右右对齐语言的正确方法,您应该改用 Horizo​​ntalAlignment。

(为了将来引用,您可以通过 Connect site 向 Microsoft 提交错误)

关于wpf - 使用 WPF WrapPanel 环绕和右对齐文本 - WPF 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3291435/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com