Ну, DisableAllButtons () может иногда работать, но в целом недостаточно.Вот пример из реальной жизни.(После некоторого упрощения.)
ListBox
ScrollViewer
Border
Grid
ScrollContentPresenter
ItemsPresenter
VirtualizingStackPanel
ListBoxItem
ContentPresenter
Grid
TextBlock
TextBlock
Button
ListBoxItem
ContentPresenter
Grid
TextBlock
TextBlock
TextBlock
ScrollBar
Grid
Grid
RepeatButton
Thumb
Rectangle
RepeatButton
Если вам нужно надежное решение, то вместо перечисления Panel использует класс VisualTreeHelper и его методы GetCildrenCount () и GetChild ().Вот код:
void DisableAllButtons(FrameworkElement fe)
{
if (fe is Button)
((Button)(fe)).IsEnabled = false;
int count = VisualTreeHelper.GetChildrenCount(fe);
for (int index = 0; index < count; ++index)
{
DisableAllButtons( (FrameworkElement)VisualTreeHelper.GetChild(fe, index) );
}
}