获取WPF扩展器头的高度

我需要获得WPF Expander.Header的高度,而不是整个Expander只是Header的高度。 没有属性可以获取它,因为Expander.Header + Expander.Content是Expander.Height。 你会怎么做才能获得Expander.Header高度?     
已邀请:
如果你的扩展器没有模板化,那就是一个Visual树:
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
,因为
Height
不是
double.IsNaN
(在XAML中,
auto
)只有在代码或XAML中明确设置时才     
我不知道如何确切地这样做(可能通过反射?),但你可以尝试使用两个扩展器。一个只有一个标题,一个只有一个ContentPresenter。您可以将第一个扩展器的IsExpanded属性绑定到第二个扩展器的IsExpanded属性。这将使它们看起来像是一个扩展器。 我不确定你到底想要完成什么。     

要回复问题请先登录注册