私は C# に非常に慣れていないので、また迷子になりました。WPF フォームで TextBoxes を反復処理してデータをクリアしようとしています。
すべてのテキスト ボックスには、6 文字の長さの文字列の前に "TextBox" というプレフィックスが付いています。つまり、(TextBox3N1W09、TextBox3N1W10...)。私は VisualTreeHelper を使いたいと思っていますが、次のことができるほど賢くありません:
#1) 変数を渡します。親を理解していると思います。
XAML < グリッド名="ThisGrid" >
私の場合、Grid:"ThisGrid" という名前を付けましたが、TextBoxes を渡す方法がわかりません。TextBoxes の名前を反復処理して文字列として渡す必要があるかどうかはわかりません。グリッド内のすべての TextBoxes を VisualTreeHelper に表示させるだけです。
#2)これらのテキストボックス名またはテキストボックスオブジェクトが渡されると、結果をどうするかわかりません:
{
子を T として返します。
}
「T」が何なのか完全に見失いました。「T」はどうすればいいですか?メソッドで何かをする必要がありますか、それともメソッドを呼び出した場所で何かをする必要がありますか。最初に言ったように、テキストボックスをクリアしたいだけです。これはそれほど難しいことではないようですが、かなり苦労しています。
public static T FindVisualChildByName<T>(DependencyObject parent, string name) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
string controlName = child.GetValue(Control.NameProperty) as string;
if (controlName == name)
{
return child as T;
}
else
{
T result = FindVisualChildByName<T>(child, name);
if (result != null)
return result;
}
}
return null;
}