当FlowDirection设置为RightToLeft时,为什么CheckBox内容中的冒号放错了

时间:2012-02-20 18:53:50

标签: wpf xaml .net-4.0

这可能是一个相当愚蠢的“问题”。我在WPF应用程序的页面上有一个CheckBox。例如,当我将CheckBox的Content-property设置为“CheckBox Content”时,框本身就放在文本的左侧。当我设置FlowDirection“RightToLeft”时,文本放在左边,框放在右边,如下图所示:

Correct Content Layout

到目前为止很好,对吧?

现在我将内容更改为“CheckBox内容:”(注意冒号)和FlowDirection“LeftToRight”,一切看起来仍然正常:box - text - 冒号。现在来了愚蠢的东西......我将FlowDirection设置为“RightToLeft”,先将文本放在框中,然后将框放在文本框中,但冒号完全放在左边,看到这个图像:

enter image description here

并非我无法解决此问题,但我必须进入XAML文件才能将标记更改为:

<CheckBox Content=" : CheckBox Content" />

没有冒犯,但这非常荒谬,因为当我现在将FlowDirection更改回LeftToRight时,顺序是box-colon-text。

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

1 个答案:

答案 0 :(得分:2)

它做你所说的。我认为你对FlowDirection的真正含义感到困惑。 FlowDirection 实际上只应用于从右到左的语言。阿拉伯语和希伯来语等语言与我们相反。他们从右向左阅读,自然就是“。”将在句子末尾,这是最左边的字符。

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

如果您希望CheckBox位于另一侧(并且它不正确),则必须编写自己的模板。