public static IEnumerable<T> FindChildren<T>(DependencyObject parent)
where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(parent, i);
if (child is T childAsT)
{
yield return childAsT;
}
foreach (T grandChild in FindChildren<T>(child))
{
yield return grandChild;
}
}
}
1条答案
按热度按时间gcuhipw91#
让我向您展示一种使用
VisualTreeHelper
的方法。首先,您需要有一种通过VisualTree搜索控件的方法。
然后,在
DatePicker
的CalendarOpened
事件处理程序中,我们可以找到Popup
及其内部的控件。Popup.Child
是一个Calender
控件,其中包含50个TextBlock
。索引为1到7的项是表示一周中的天数的TextBlocks
。