コード例 #1
0
 private void ValidateListener(IVisualStateListener listener)
 {
     if (string.Equals(VisualStateName, listener.VisualStateName) == false)
     {
         throw new ArgumentOutOfRangeException(nameof(listener));
     }
 }
コード例 #2
0
        public void DetachListener(IVisualStateListener listener)
        {
            ValidateListener(listener);

            _listeners.Remove(listener);

            if (_isActive)
            {
                listener.LeaveState(false);
            }
        }
コード例 #3
0
        public void AttachListener(IVisualStateListener listener)
        {
            ValidateListener(listener);

            _listeners.Add(listener);

            if (_isActive)
            {
                listener.EnterState(false);
            }
        }
コード例 #4
0
ファイル: WeakVisualStateListener.cs プロジェクト: Egaros/lib
 public WeakVisualStateListener(IVisualStateListener listener)
 {
     VisualStateName = listener.VisualStateName;
     _weakReference  = new WeakReference(listener);
 }
コード例 #5
0
 public void DetachListener(IVisualStateListener listener)
 {
     EnsureLayoutUpdatedHandler();
     GetListenerCollection(listener.VisualStateName, false)?.DetachListener(listener);
 }
コード例 #6
0
 public void AttachListener(IVisualStateListener listener)
 {
     EnsureLayoutUpdatedHandler();
     GetListenerCollection(listener.VisualStateName, true).AttachListener(listener);
 }
コード例 #7
0
        private static bool IsAliveListener(IVisualStateListener listener)
        {
            var weakListener = listener as IWeakReference;

            return(weakListener == null || weakListener.IsAlive);
        }