XAMLで作成しましCustomWindow
た。多くのネストされた要素が含まれています。x:Name="SomeName"
public(修飾子を設定)としてマークされた、すべての名前付き要素(名前を設定)を取得するための単純なメソッドが存在しx:FieldModifier="public"
ますか?
質問する
861 次
1 に答える
1
私が知っているすぐに使える方法はありません。を使用して VisualTree を参照し、関心VisualTreeHelper
のあるプロパティがあるかどうかを確認する必要があります。
必要なことを実行できるメソッドは次のとおりです。
public static IEnumerable<FrameworkElement> FindVisualChildren(FrameworkElement obj, Func<FrameworkElement, bool> predicate)
{
if (obj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
var objChild = VisualTreeHelper.GetChild(obj, i);
if (objChild != null && predicate(objChild as FrameworkElement))
{
yield return objChild as FrameworkElement;
}
foreach (FrameworkElement childOfChild in FindVisualChildren(objChild as FrameworkElement, predicate))
{
yield return childOfChild;
}
}
}
}
使用法は、名前のみのチェックの場合、次のようになります。
var children = FindVisualChildren((FrameworkElement)sender, o => !string.IsNullOrEmpty(o.Name));
于 2012-12-05T09:52:19.140 に答える