Если ваш расширитель не шаблонизирован, это визуальное дерево:
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;
Edit
Кроме того, я бы хотел подчеркнуть ActualHeight
, а не Height
, потому что Height
не double.IsNaN
(в XAML, auto
), только если установлено явно в коде или XAML