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

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

<Button Content="OK"/>

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

<Button Content="O_______K"/>

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

Button属性

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

Run的Text属性

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

<DataTemplate>
    <TextBlock Text="{Binding}"/>
</DataTemplate>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容