я хочу очистить все значения в сетке не (datagrid) детей в wpf - PullRequest
2 голосов
/ 29 марта 2011

Я хочу очистить все значения в дочерних элементах сетки, например, если один из моих дочерних элементов сетки является текстовым полем, я хочу сбросить его или удалить его из имени сетки, а не из текстового поля? как? не очистить сетку, но очистить текст в текстовом поле

Ответы [ 2 ]

3 голосов
/ 29 марта 2011

Следующий код должен очистить все текстовые поля:

var textboxes = grid.Children.OfType<TextBox>();
foreach (var textBox in textboxes)
    textBox.Text = String.Empty;
0 голосов
/ 29 марта 2011

Следующая функция будет искать все элементы управления указанного типа в указанном объекте:

/// <summary>
/// Helper function for searching all controls of the specified type.
/// </summary>
/// <typeparam name="T">Type of control.</typeparam>
/// <param name="depObj">Where to look for controls.</param>
/// <returns>Enumerable list of controls.</returns>
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj)
    where T : DependencyObject
{
    if (depObj != null)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
            if (child != null && child is T)
            {
                yield return (T)child;
            }

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

Спасибо автору этой функции ... Не помню, где я ее взял.

Теперь вы можете, например, очистить значения всех текстовых полей:

foreach (TextBox child in FindVisualChildren<TextBox>(yourGrid))
{
    child.Text = string.Empty;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...