WPF: Получить следующий / предыдущий визуальный объект - PullRequest
1 голос
/ 12 января 2011

У меня есть StackPanel, содержащий число TextBox.Есть ли способ получить визуальные элементы Next / Previous?

Требуемая функция довольно аналогична функции jQuery .next(), которая получает следующий объект.

1 Ответ

1 голос
/ 12 января 2011

Вы можете попробовать следующий метод для перечисления дерева визуалов.

public static IEnumerable<T> FindVisualChildren<T>
(DependencyObject depObj, string childName) where T : DependencyObject
{

    if (depObj != null)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
        {

            DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
            var frameworkElement = child as FrameworkElement;
            if (child != null && frameworkElement.Name == childName)
            {
                yield return (T)child;
            }

            foreach (T childOfChild in FindVisualChildren<T>(child, childName))
            {
                yield return childOfChild;
            }
        }
     }
}

Предполагая, что вы назвали свои текстовые поля "tbInsideStackPanel", используйте его как:

foreach (var textBox in FindVisualChildren<TextBox>(this.stackPanel1, 
              "tbInsideStackPanel").ToList())
{
   textBox.Background = Brushes.Blue;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...