Beispiel #1
0
        /// <summary>
        /// Loadedイベントハンドラ用メソッド
        /// </summary>
        /// <param name="sender">イベント発生元</param>
        /// <param name="e">イベント引数</param>
        private static void FrwElement_Loaded(object sender, RoutedEventArgs e)
        {
            var frwElement = sender as FrameworkElement;

            //登録したメソッドは削除しないと、メモリリークの元になる。
            frwElement.Loaded -= new RoutedEventHandler(FrwElement_Loaded);

            var command = FrameworkElementBehavior.GetOnLoadedCommand(frwElement);

            //実行可能であれば、コマンドを実行する。
            if (command != null && command.CanExecute(e))
            {
                command.Execute(e);
            }

            return;
        }
Beispiel #2
0
        /// <summary>
        /// OnLoadedCommandプロパティ値変更イベントハンドラ
        /// </summary>
        /// <param name="dpObj">対象オブジェクト</param>
        /// <param name="e">イベント引数</param>
        private static void OnLoadedCommandPropertyChanged(
            DependencyObject dpObj,
            DependencyPropertyChangedEventArgs e)
        {
            var frwElement = dpObj as FrameworkElement;

            if (frwElement == null)
            {
                //この添付プロパティは、FrameworkElementのサブクラスで
                //使われる事を前提としています。
                //そのため、FrameworkElementを継承していない
                //クラスインスタンスは無視されます。
                return;
            }

            if (e.NewValue != null)
            {
                //e.NewValue→新しいICommandオブジェクトが設定された。
                if (!frwElement.IsLoaded)
                {
                    //IsLoaded = false = まだLoadされていない。
                    //→Loadedイベントにハンドラメソッドを登録します。
                    frwElement.Loaded += new RoutedEventHandler(FrwElement_Loaded);
                }
                else
                {
                    //IsLoaded = true = 既にLoadされている。
                    //→Loadedイベント用ハンドラメソッドを実行します。
                    FrameworkElementBehavior.FrwElement_Loaded(
                        frwElement,
                        new RoutedEventArgs
                    {
                        Source  = frwElement,
                        Handled = false
                    });
                }
            }

            return;
        }