WPF绑定字符串下划线消失或减少

众所周知,WPF中有两类控件。一类是内容控件,一类是其他。
内容控件,有一个属性叫Content。典型的有ContentControlButtonLabelContent非常的灵活,可以承载其他的控件。而且对于非控件或者是不能识别的,会直接ToString然后显示。
所以我们有时候会直接把字符串绑定到Content属性上。比如:

如果只是普通的这样使用,其实是没有问题的。但是一旦涉及到下划线,就会出现下划线变少的情况。比如:

这里面的下划线就会变少。
如果我们运行程序然后在Visual Tree中查看Button的属性。会看到

Button属性

最后一级的TextBlockText属性内容为空,但是Inlines的属性是有值的。展开Inlines会看到里面是一个Run。做过RichTextBox相关的朋友可能对这个很熟悉。而这个RunDataContextText属性的值是不同的。DataContext中的值是我们设置的值,但是Text中的值却不是。
Run的DataContext属性

Run的Text属性

为何会出现这个问题,暂时不知道。还没去研究源码。不过巨硬现在把WPF也开源了,等有时间了去研究一下。
解决方法就很简单啦。一般有Content属性的控件,都有ContentTemplate属性。只用写一个模板,在里面指定用TextBlock显示就好了。


    

你可能感兴趣的:(WPF绑定字符串下划线消失或减少)