我需要得到的WPF Expander.Header的高度,而不是整个扩展器只是头部的高度。
因为Expander.Header + Expander.Content是Expander.Height,所以没有属性来获取它。
你会怎么做来获得Expander.Header的高度?
发布于 2010-12-26 06:25:50
如果你的扩展器没有模板化,那就是一个可视化的树:
Expander { Border { DockPanel { ToggleButton, ContentPresenter {...} } } }你所需要的就是得到那个ToggleButton。VisualTreeHelper使用起来很简单
var border = VisualTreeHelper.GetChild(expander, 0);
var dockpanel = VisualTreeHelper.GetChild(border, 0);
var togglebutton = VisualTreeHelper.GetChild(dockpanel, /*0*/); // it may be not 0th, so please enumerate all children using VisualTreeHelper.GetChildrenCount(dockpanel) and find that ToggleButton
return togglebutton.ActualHeight;编辑
此外,我还想强调使用ActualHeight,而不是Height,因为只有在代码或XAML中显式设置Height时,它才不是double.IsNaN (在XAML中是auto
发布于 2010-12-26 06:13:56
我不知道有什么方法可以做到这一点(也许是通过反射?),但是你可以尝试使用两个扩展器。一个只有一个头,一个只有一个ContentPresenter。您可以将第一个扩展器的IsExpanded属性绑定到第二个扩展器的IsExpanded属性。这将使它们看起来像是单个扩展器。
不过,我不太确定你到底想要实现什么。
https://stackoverflow.com/questions/4531839
复制相似问题