清除用户控件内的所有文本框

时间:2018-07-12 17:07:04

标签: user-controls wpf-controls

所以我有一个带有六个文本框和几个按钮的用户控件。这些按钮之一是“清除”。当我在btnClear_Click处理程序中单击清除按钮时,我想在我的用户控件中找到所有文本框(并且仅在我的用户控件中)。然后将它们设置为空字符串。而已。就这样。

事实证明这是一件艰巨而艰巨的任务。找到答案就像试图绘制人类基因组图。我只想通过控件进行说明。而已。

我对听到我想做的优点不感兴趣。只是操作方式的机制。像这样:

public partial class myUserControl: UserControl
{
    private void btnClear_Click(object sender, RoutedEventArgs e)
    {
        var allMyControls = SomeMiraculousOperationToGetAllControlsThatOnlyExistInMyUserControl();
        foreach (var control in allMyControls)
        {
            if (control is TextBox)
                ((TextBox)control).Text = string.Empty;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用VisualTreeHelpe r枚举用户控件的子控件。

您可以基于此类here

找到扩展方法
public static T GetChildOfType<T>(this DependencyObject depObj) 
    where T : DependencyObject
{
    if (depObj == null) return null;

    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
    {
        var child = VisualTreeHelper.GetChild(depObj, i);

        var result = (child as T) ?? GetChildOfType<T>(child);
        if (result != null) return result;
    }
    return null;
}