[WPF Bug清单]之(9)——消失的光标

首先声明一下:有人早就发现了这个问题,发过了帖子,也已经有微软的人说这是“by design”的行为。但是我依然对这个诡异的行为表示不可理解。所以发上来,看看大家的见解。

 

示例代码非常之简单。 

<Window x:Class="HiddenCaret.DemoWindow"

    xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"

    ResizeMode
="NoResize" Title="Caret Gone"

    Width
="150" Height="100">

    
<TextBox TextWrapping="Wrap"/>

</Window>

TextBox要设置为Wrap使其自动换行。

重现Bug的步骤如下:

 


1. 运行程序

 

2. 输入很多字母

 

3. 将光标放到行首

 

4. 输入空格,光标不见了

 

光标不可见,其实还是存在的,只是跑到了第一行的行尾。这就是微软的人说的“by design”的行为的后果。

 

如果大家试着改一下窗体的大小,比如改成200,那么最后一步输入一个空格之后,光标的确还是可见的,多输入几个空格就又看不见了。这是字体大小与窗体宽度的比例问题造成的。

 

而且重现上面的问题,也并不需要这么多步骤,只要在文本框里输入足够多的空格就会有问题——根本原因就在于空格不会被Wrap

 

不知道微软为什么会这么做?但是相信用户在文本框输入着东西,突然发现光标看不到了,绝对不会觉得很自然。而且WinFormTextBox是没有这个问题。

 

不知道微软的这个by design是作何考虑的?大家觉得呢?

 

同系列的其它文章:

[WPF Bug清单]()与之(1)——可以多选的单选ListBox

[WPF Bug清单](2)——RadioButtonIsChecked绑定失效

[WPF Bug清单](3)——暗中创建文件的打开文件对话框

[WPF Bug清单](4)——点击RadioButton的空白没有反应

[WPF Bug清单](5)——隐藏模态对话框后变成非模态

[WPF Bug清单](6)——ButtonIsCancel属性失效

[WPF Bug清单](7)——顽固的Error Template

[WPF Bug清单](8)——RowDefinitionMaxHeight在一定条件下失效

posted on 2009-03-19 22:14  南柯之石  阅读(3088)  评论(8编辑  收藏  举报

导航