wpf - 当 FlowDirection 设置为 RightToLeft 时,为什么 CheckBox Content 中的冒号放置错误

标签 wpf xaml .net-4.0

这也许是一个相当愚蠢的“问题”。我的 WPF 应用程序页面上有一个复选框。例如,当我将复选框的内容属性设置为“复选框内容”时,该框本身放置在文本的左侧。当我将 FlowDirection 设置为“RightToLeft”时,文本放置在左侧,框放置在右侧,如下图所示:

Correct Content Layout

到目前为止一切都很好,对吧?

现在我将内容更改为“CheckBox Content:”(注意冒号)和 FlowDirection“LeftToRight”,一切看起来仍然正常:框 - 文本 - 冒号。现在出现了愚蠢的事情...我将 FlowDirection 设置为“RightToLeft”以首先显示文本,然后显示框,但冒号完全放置在左侧,请参见此图片:

enter image description here

并不是说我无法解决这个问题,而是我必须进入 XAML 文件将标记更改为:

<CheckBox Content=" : CheckBox Content" />

无意冒犯,但这非常荒谬,因为当我现在将 FlowDirection 更改回 LeftToRight 时,顺序是框 - 冒号 - 文本。

我的问题是,有人知道是什么原因造成的吗?或者这应该发生吗?还有其他控件可能会发生这种情况吗?

最佳答案

它按照你所说的去做。我认为您对 FlowDirection 的真正含义感到困惑。 FlowDirection 实际上应该只用于从右到左的语言。阿拉伯语和希伯来语等语言的读法与我们相反。他们从右向左读,所以很自然地读“。”将位于句子的末尾,即最左边的字符。

WPF(和其他 Microsoft 框架)足够聪明,可以理解您的应用程序、计算机和线程都是英文的,因此它们将覆盖 RightToLeft(几乎),但不会覆盖标点符号。

如果您希望您的复选框位于另一侧(并且这是不正确的),您将必须编写自己的模板。

关于wpf - 当 FlowDirection 设置为 RightToLeft 时,为什么 CheckBox Content 中的冒号放置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9366750/

相关文章:

c# - EF 5 : How to cancel a longrunning query in a async Task

c# - Resharper 要我实现一个在 WPF 生成的代码中实现的接口(interface)成员

c# - Windows 8 是否对应用程序有更严格的权限?

c# - ListView 中的上下文菜单,选择一个项目

c# - WPF 自定义文本框控件未正确绑定(bind)文本

.net - Entity Framework 4.0 Entity SQL 传递 null ObjectParameter 参数

security - 代码契约(Contract)是否应该用于安全性?

c# - MaterialDesign XAML 转换程序绑定(bind) ItemsSource 和 ItemTemplate 就像在 ItemsControl 中一样

c# - 使用静态类对主窗口的引用 - 好的做法?

wpf - 我可以让 WPF 样式优先于本地值吗?