Exemplo n.º 1
0
        /// <summary>
        /// AttachedPropertyActionに、通知時に実行するViewの処理を埋め込みます
        /// </summary>
        /// <param name="attachedProperty"></param>
        /// <param name="d"></param>
        /// <param name="e"></param>
        /// <param name="action"></param>
        public static void Inject(DependencyProperty attachedProperty, DependencyObject d, DependencyPropertyChangedEventArgs e, Action <TControl, TParam> action)
        {
            var control = d as TControl;

            if (control == null)
            {
                return;
            }

            var oldVal = e.OldValue as InjectedViewAction <TParam>;

            if (oldVal != null)
            {
                // 古いハンドラを削除
                oldVal.Remove(attachedProperty.Name, control);
            }
            var newVal = e.NewValue as InjectedViewAction <TParam>;

            if (newVal != null)
            {
                // 新しいハンドラを登録
                var handler = new InjectedViewActionHandler <TControl, TParam>(attachedProperty.Name, control, action);
                newVal.Add(handler);
            }
        }
Exemplo n.º 2
0
 private void OnTriggerChanged(DependencyPropertyChangedEventArgs e)
 {
     InjectedViewActionHandler <FrameworkElement, object> .Inject(TriggerProperty, this.AssociatedObject, e, (element, param) =>
     {
         this.InvokeActions(param);
     });
 }