所以我有一个有六个文本框和几个按钮的用户控件。其中一个按钮是“清除”的。当我单击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;
}
}
}发布于 2018-07-14 15:56:36
可以使用VisualTreeHelpe(https://msdn.microsoft.com/fr-fr/library/system.windows.media.visualtreehelper(v=vs.110%29.aspx)r )枚举用户控件的子控件。
您可以找到基于这个类这里的扩展方法。
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;
}https://stackoverflow.com/questions/51311105
复制相似问题