在Silverlihgt中,我们可以通过使用VisualTreeHelper来帮助得到指定控件中的相应子控件信息,并且在其子控件上使用所需要的操作。
/// <summary> /// 递归遍历指定控件内所有子控件,并在子控件上引发相应的操作 /// </summary> /// <param name="control">指定控件</param> /// <param name="predicate">得到子控件后需引发的操作</param> private void TraversalChildControlsInControl(DependencyObject control, Func<DependencyObject, bool> predicate) { int childControlCount = VisualTreeHelper.GetChildrenCount(control); if (childControlCount > 0) { for (int i = 0; i < childControlCount; i++) { DependencyObject childControl = VisualTreeHelper.GetChild(control, i); if (childControl != null) { predicate.Invoke(childControl); int grandSonControlCount = VisualTreeHelper.GetChildrenCount(childControl); if (grandSonControlCount > 0) { TraversalChildControlsInControl(childControl, predicate); } } } } }