2011-03-16 82 views
0

我有一个应用程序,每个选项卡中有一个选项卡控件和几个文本框,当用户这样说时,我想要清除窗口(称为MainWindow)中的每个文本框。我使用了here中描述的方法,但它似乎只适用于选项卡中的焦点文本框。WPF - 清除tabcontrol中的所有文本框不工作

+0

请检查我的解决方案为你工作。 – 2011-03-17 15:05:45

回答

4

试试这个:

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); 
} 
+0

它似乎没有对我目前的方法有不同的影响。 – user646265 2011-03-17 18:34:31

+0

可以详细说明吗? – 2011-03-18 08:59:05

+0

当我清除文本框时,只清除焦点选项卡中包含的文本框。 – user646265 2011-03-18 19:15:35

1

尝试用LogicalTreeHelper.GetChildren

LogicalTreeHelper更换呼叫VisualTreeHelper.GetChildren得到实际的视觉树。通常这比逻辑树多,但在这种情况下,由于其他选项卡不可见 - 这些选项卡中的可视化子树不会被创建。 虽然LogicalTree应该仍然存在,所以应该工作。