WPF - очистить все текстовые поля в tabcontrol не работает - PullRequest
0 голосов
/ 17 марта 2011

У меня есть приложение с элементом управления вкладками и несколькими текстовыми полями на каждой вкладке, и когда пользователь говорит об этом, я бы хотел, чтобы каждое текстовое поле в окне (называемое MainWindow) было очищено. Я использовал метод, описанный здесь , но кажется, что он работает только для тех текстовых полей на вкладке, на которых он находится в фокусе.

Ответы [ 2 ]

4 голосов
/ 17 марта 2011

Попробуйте это:

void ClearTextBoxes(DependencyObject obj)
{
    TextBox tb = obj as TextBox;
    if (tb != null)
        tb.Text = "";

    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj as DependencyObject); i++)
        ClearTextBoxes(VisualTreeHelper.GetChild(obj, i));
}

private void Button_Click(object sender, RoutedEventArgs e)
{
    ClearTextBoxes(this);
}
1 голос
/ 17 марта 2011

Попробуйте заменить вызовы на VisualTreeHelper.GetChildren на LogicalTreeHelper.GetChildren

LogicalTreeHelper получает фактическое визуальное дерево.обычно это намного больше, чем логическое дерево, но в этом случае, поскольку другие вкладки не видны - визуальное поддерево в этих вкладках не создается.LogicalTree все еще должен быть там, чтобы он работал.

...