本文来告诉大家在 WPF 开发中,发现有某个按钮或某个控件,某个预期的界面,没有在窗口或者没有在界面里面看到或者找到可能的原因和调试的方法
不在视觉树
如果控件在界面看不到,首先需要通过视觉树了解控件是否还在视觉树上
一个不存在视觉树的控件,肯定不会在界面中显示
调试某个控件元素是否在 WPF 界面的视觉树上,可以通过 VisualStudio 的实时可视化树功能进行调试
如果已进入后台断点,可以尝试通过此元素的 Parent 属性,一层层寻找,如果能找到顶层的窗口,那么证明显示到窗口里面,否则有一层是空,则证明此元素没有被显示在此窗口里面
可见性
如果控件本身的 Visibility 属性被设置为不可见,那么自然元素就不可见啦。在上一步的基础上,通过控件的属性面板,找到控件的 Visibility 属性,可以了解到控件是否因为此属性的原因而在界面不可见
没有被布局
没有被布局通常的原因就是给定的宽度或高度大小不对,例如实际的高度或实际的宽度为 0 或太小
简单的调试的方法就是在上面一步的基础上,如果控件在可视化树上,通过控件的属性面板,找到控件的尺寸。如果控件的尺寸大小,自然就是看不到此控件
被布局到不可见地方
如果控件对象有自己的宽度和高度,请看控件的 Margin 属性,是否被布局到看不见的地方,例如 Left 的值是 10000 超级大的一个数值。或者是放在 Canvas 容器里面,但是 Canvas 的 Left 附加属性被设置一个超级大的值等
如果控件的坐标符合预期,那继续找一层,控件的容器,看控件所在的容器的坐标以及宽度高度是否符合预期