我需要获取WPF Expander.Header的高度,而不是整个Expander,只是Header的高度。
因为Expander.Header + Expander.Content就是Expander.Height,所以没有获取它的属性。
您将如何获取Expander.Header的高度?
Expander { Border { DockPanel { ToggleButton, ContentPresenter {...} } } }
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
,因为Height
仅当在代码或XAML中明确设置时才不是double.IsNaN
(在XAML中,auto
)