どういうわけか、UWPプロジェクトのメインウィンドウのすべてのコントロールをループする必要があります。私の最初の考えは、それが私のwindow.Controlsの単純なforeachになるだろうということでしたが、これはUWPには存在しません。
私はここを見て回って同様の質問を見つけましたが、試してみたときにこのコードも機能していないようでした。ウィンドウ全体を正常にループしましたが、グリッドなどを通過しているのがはっきりと見えたにもかかわらず、見つかったオブジェクトがまったくないことがわかりました。
C#を使用してUWPでこれを行う方法はありますか?私はそれを行うためにVisualTreeHelperを探しようとしましたが、それでも成功しませんでした。助けていただければ幸いです。
MSDNドキュメントの次の方法を使用して、ページからすべてのテキストボックスを取得できます。
internal static void FindChildren<T>(List<T> results, DependencyObject startNode)
where T : DependencyObject
{
int count = VisualTreeHelper.GetChildrenCount(startNode);
for (int i = 0; i < count; i++)
{
DependencyObject current = VisualTreeHelper.GetChild(startNode, i);
if ((current.GetType()).Equals(typeof(T)) || (current.GetType().GetTypeInfo().IsSubclassOf(typeof(T))))
{
T asType = (T)current;
results.Add(asType);
}
FindChildren<T>(results, current);
}
}
基本的に、現在のアイテムの子を再帰的に取得し、要求されたタイプに一致するアイテムを提供されたリストに追加します。
次に、ページ/ボタンハンドラー/ ...のどこかで次のことを行う必要があります。
var allTextBoxes = new List<TextBox>();
FindChildren(allTextBoxes, this);
foreach(var t in allTextBoxes)
{
t.Text = "Updated!";
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加