Wpf 当FlowDirection设置为RightToLeft时,为什么复选框内容中的冒号放置错误

Wpf 当FlowDirection设置为RightToLeft时,为什么复选框内容中的冒号放置错误,wpf,xaml,.net-4.0,Wpf,Xaml,.net 4.0,这也许是一个相当愚蠢的“问题”。我在WPF应用程序的页面上有一个复选框。例如,当我将复选框的Content属性设置为“CheckBox Content”时,复选框本身位于文本的左侧。当我设置FlowDirection“RightToLeft”时,文本放在左侧,方框放在右侧,如下图所示: 到目前为止还不错,对吧 现在我将内容更改为“CheckBox Content:”(注意冒号)和FlowDirection“LeftToRight”,所有内容看起来仍然正常:box-text-冒号。现在是愚蠢的事

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

到目前为止还不错,对吧

现在我将内容更改为“CheckBox Content:”(注意冒号)和FlowDirection“LeftToRight”,所有内容看起来仍然正常:box-text-冒号。现在是愚蠢的事情。。。我将FlowDirection设置为“RightToLeft”,首先显示文本,然后显示框,但冒号完全位于左侧,请参见下图:

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

<CheckBox Content=" : CheckBox Content" />

无意冒犯,但这很可笑,因为当我现在将FlowDirection更改回LeftToRight时,顺序是box-colon-text


我的问题是,有人知道这是什么原因吗?还是这应该发生?还有其他的控制措施吗?

它会按照你的要求去做。我想你对什么是流向感到困惑FlowDirection实际上应该只用于从右向左的语言。像阿拉伯语和希伯来语这样的语言读起来和我们相反。他们从右到左阅读,所以“.”自然会出现在句子的末尾,这是最左边的字符

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


如果你想让你的复选框在另一边(并且它是不正确的),你必须写你自己的模板。

答案很好,现在我明白了。我也可以只放置一个文本块和一个包含空内容的复选框,这是最简单的方法。但如果确实需要,您的解决方案似乎是最好的!:)@阿巴斯如果这样做,则单击
TextBlock
中的文本将不会选中
复选框,这与预期行为相反