【Silverlight】 全コントロール一覧を取得するには

// 全てのコントロールを取得
IEnumerable<DependencyObject> objList
    = from v in this.GetVisualTree()
      select v;

using System;
using System.Windows;
using System.Windows.Media;
using System.Collections.Generic;
using System.Windows.Controls;
using System.Linq;

namespace Extensions
{
    // DependencyObjectクラスの拡張メソッド
    public static class DependencyObjectExtensions
    {
        // 子要素一覧を取得します。
        public static IEnumerable<DependencyObject> 
            GetVisualTree(this DependencyObject obj)
        {
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
            {
                var child = VisualTreeHelper.GetChild(obj, i);
                yield return child;

                foreach (var children in GetVisualTree(child))
                {
                    yield return children;
                }
            }
        }
    }
}

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中