Esempio n. 1
0
        public override void Cleanup()
        {
            base.Cleanup();
            WeakEventManager <InteraccionViewModel, PropertyChangingEventArgs> .RemoveHandler(this, "PropertyChanging", this_PropertyChanging);

            WeakEventManager <InteraccionViewModel, PropertyChangedEventArgs> .RemoveHandler(this, "PropertyChanged", this_PropertyChanged);
        }
Esempio n. 2
0
        /// <summary>
        /// 单一订阅
        /// </summary>
        /// <param name="actionType"></param>
        /// <param name="handler"></param>
        /// <param name="useLatestPayload"></param>
        /// <returns></returns>
        public Unsubscibe Subscribe(Type actionType, EventHandler <YEventArgs> handler, bool useLatestPayload = true)
        {
            lock (locker) {
                if (!eventSource.ContainsKey(actionType))
                {
                    eventSource[actionType] = new YEventSource();
                }
                var source = eventSource[actionType];
                WeakEventManager <YEventSource, YEventArgs> .AddHandler(source, nameof(YEventSource.Event), handler);

                if (useLatestPayload && latestPayload?.GetType() == actionType)
                {
                    handler?.Invoke(new YEventSource()
                    {
                        CallFrame = new StackTrace().GetFrame(0)
                    }, new YEventArgs(latestPayload));
                }
            }
            return(() => {
                lock (locker) {
                    var source = eventSource[actionType];
                    WeakEventManager <YEventSource, YEventArgs> .RemoveHandler(source, nameof(YEventSource.Event), handler);
                }
            });
        }
        private void CloseDialog(object sender, RoutedEventArgs e)
        {
            WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .RemoveHandler(TraceListener, "PropertyChanged",
                                                                                               TraceListenerOnPropertyChanged);

            Close();
        }
        private static void ActivePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            if (!(d is TextBox))
            {
                return;
            }
            var textBox = (TextBox)d;

            if ((e.NewValue as bool?).GetValueOrDefault(false))
            {
                WeakEventManager <TextBox, KeyboardFocusChangedEventArgs>
                .AddHandler(textBox, "GotKeyboardFocus", OnKeyboardFocusSelectText);

                WeakEventManager <TextBox, MouseButtonEventArgs>
                .AddHandler(textBox, "PreviewMouseLeftButtonDown", OnMouseLeftButtonDown);
            }
            else
            {
                WeakEventManager <TextBox, KeyboardFocusChangedEventArgs>
                .RemoveHandler(textBox, "GotKeyboardFocus", OnKeyboardFocusSelectText);

                WeakEventManager <TextBox, MouseButtonEventArgs>
                .RemoveHandler(textBox, "PreviewMouseLeftButtonDown", OnMouseLeftButtonDown);
            }
        }
Esempio n. 5
0
        private void Window_Closed(object sender, EventArgs e)
        {
            _ViewModel.StopGameControllerTask();
            WeakEventManager <MainViewModel, System.ComponentModel.PropertyChangedEventArgs> .RemoveHandler(_ViewModel, "PropertyChanged", _ViewModel_PropertyChanged);

            _ViewModel.SaveAndCloseAction = null;
        }
Esempio n. 6
0
        private static void AutoScrollPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
        {
            var scroller = obj as ScrollViewer;

            if (scroller == null || args.OldValue == args.NewValue)
            {
                return;
            }

            if (args.OldValue != null)
            {
                var coll = (INotifyCollectionChanged)args.OldValue;
                CollectionChangedEventManager.RemoveHandler(coll, AutoScrollSource_CollectionChanged);
                WeakEventManager <ScrollViewer, SizeChangedEventArgs> .RemoveHandler(scroller, "SizeChanged", ScrollViewer_SizeChanged);

                WeakPair pair = Get(coll, (p, _, __) => p);
                if (pair != null)
                {
                    _pairs.Remove(pair);
                }
            }

            if (args.NewValue != null)
            {
                var coll = (INotifyCollectionChanged)args.NewValue;
                CollectionChangedEventManager.AddHandler(coll, AutoScrollSource_CollectionChanged);
                WeakEventManager <ScrollViewer, SizeChangedEventArgs> .AddHandler(scroller, "SizeChanged", ScrollViewer_SizeChanged);

                AddPair(coll, scroller);
            }
        }
Esempio n. 7
0
        /// <summary>
        /// 集合订阅
        /// </summary>
        /// <param name="handlers"></param>
        /// <param name="useLatestPayload"></param>
        /// <returns></returns>
        public Unsubscibe Subscribe(IDictionary <Type, EventHandler <YEventArgs> > handlers, bool useLatestPayload = true)
        {
            lock (locker) {
                foreach (var pair in handlers)
                {
                    var actionType = pair.Key;
                    var handler    = pair.Value;
                    if (!eventSource.ContainsKey(actionType))
                    {
                        eventSource[actionType] = new YEventSource();
                    }
                    var source = eventSource[actionType];
                    WeakEventManager <YEventSource, YEventArgs> .AddHandler(source, nameof(YEventSource.Event), handler);

                    if (useLatestPayload && latestPayload?.GetType() == actionType)
                    {
                        handler?.Invoke(this, new YEventArgs(latestPayload));
                    }
                }
            }
            return(() => {
                lock (locker) {
                    foreach (var pair in handlers)
                    {
                        var source = eventSource[pair.Key];
                        WeakEventManager <YEventSource, YEventArgs> .RemoveHandler(source, nameof(YEventSource.Event), pair.Value);
                    }
                }
            });
        }
Esempio n. 8
0
        public override void Cleanup()
        {
            base.Cleanup();
            WeakEventManager <CalendarViewModel, PropertyChangedEventArgs> .RemoveHandler(this, "PropertyChanged", this_PropertyChanged);

            MainViewModel.MainViewModelMsg.Unregister(this, handleMainViewModelMessage);
        }
        private static void FeedbackProvider_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var self       = (ManipulationBoundaryFeedbackAwareContentControl)d;
            var oldElement = (UIElement)e.OldValue;
            var newElement = (UIElement)e.NewValue;

            // The FeedbackProvider got changed. Remove old/add new handlers.
            if (oldElement != null)
            {
                WeakEventManager <UIElement, ManipulationBoundaryFeedbackEventArgs> .RemoveHandler(
                    oldElement,
                    nameof(ManipulationBoundaryFeedback),
                    self.FeedbackProvider_ManipulationBoundaryFeedback);

                self.TraceVerbose("Removed FeedbackProvider {0}.", oldElement);
            }

            if (newElement != null)
            {
                WeakEventManager <UIElement, ManipulationBoundaryFeedbackEventArgs> .AddHandler(
                    newElement,
                    nameof(ManipulationBoundaryFeedback),
                    self.FeedbackProvider_ManipulationBoundaryFeedback);

                self.TraceVerbose("Added FeedbackProvider {0}.", oldElement);
            }
        }
Esempio n. 10
0
        private static void HandlerProperty_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            TabControl tabControl = d as TabControl;

            if (tabControl == null)
            {
                return;
            }
            if (e.NewValue == null && e.OldValue != null)
            {
                WeakEventManager <TabControl, MouseButtonEventArgs> .RemoveHandler(tabControl, nameof(TabControl.PreviewMouseLeftButtonDown), TabTearOffBehavior.TabControl_PreviewMouseLeftButtonDown);

                if (!tabControl.IsLoaded)
                {
                    tabControl.Loaded -= TabTearOffBehavior.TabControl_Loaded;
                }
                else
                {
                    TabTearOffBehavior.SetWindowMaintainZIndex(tabControl, false);
                }
            }
            else if (e.NewValue != null && e.OldValue == null)
            {
                WeakEventManager <TabControl, MouseButtonEventArgs> .AddHandler(tabControl, nameof(TabControl.PreviewMouseLeftButtonDown), TabTearOffBehavior.TabControl_PreviewMouseLeftButtonDown);

                if (!tabControl.IsLoaded)
                {
                    tabControl.Loaded += TabTearOffBehavior.TabControl_Loaded;
                }
                else
                {
                    TabTearOffBehavior.SetWindowMaintainZIndex(tabControl, true);
                }
            }
        }
Esempio n. 11
0
        private static void mediaCollectionViewChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            MediaStateInfoView view = (MediaStateInfoView)d;

            if (e.OldValue != null)
            {
                MediaStateCollectionView oldState = (MediaStateCollectionView)e.OldValue;

                WeakEventManager <MediaViewer.Model.Media.Base.State.MediaState, PropertyChangedEventArgs> .RemoveHandler(oldState.MediaState, "PropertyChanged", view.mediaState_PropertyChanged);

                WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .RemoveHandler(oldState.MediaState.UIMediaCollection, "PropertyChanged", view.uiMediaCollection_PropertyChanged);

                WeakEventManager <MediaStateCollectionView, EventArgs> .RemoveHandler(oldState, "SelectionChanged", view.selectionChanged);
            }

            if (e.NewValue != null)
            {
                MediaStateCollectionView newState = (MediaStateCollectionView)e.NewValue;

                WeakEventManager <MediaViewer.Model.Media.Base.State.MediaState, PropertyChangedEventArgs> .AddHandler(newState.MediaState, "PropertyChanged", view.mediaState_PropertyChanged);

                WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .AddHandler(newState.MediaState.UIMediaCollection, "PropertyChanged", view.uiMediaCollection_PropertyChanged);

                WeakEventManager <MediaStateCollectionView, EventArgs> .AddHandler(newState, "SelectionChanged", view.selectionChanged);

                view.initialize(newState.MediaState);
            }
        }
Esempio n. 12
0
        private void OnItemsSourceChanged(IList oldValue, IList newValue)
        {
            ValidateData();

            if (oldValue is INotifyCollectionChanged oldItemsSource)
            {
                WeakEventManager <INotifyCollectionChanged, NotifyCollectionChangedEventArgs>
                .RemoveHandler(oldItemsSource, "CollectionChanged", ItemsSource_CollectionChanged);
            }

            if (newValue != null)
            {
                if (newValue is INotifyCollectionChanged newItemsSource)
                {
                    WeakEventManager <INotifyCollectionChanged, NotifyCollectionChangedEventArgs>
                    .AddHandler(newItemsSource, "CollectionChanged", ItemsSource_CollectionChanged);
                }
            }

            Reset();

            this.ScatterSeries?.UpdateItemsSource();

            this.BarSeries?.UpdateItemsSource();

            Refresh();
        }
Esempio n. 13
0
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .RemoveHandler(_service, "PropertyChanged", ValueChanged);
     }
 }
Esempio n. 14
0
        static void Main(string[] args)
        {
            var dealer = new CarDealer();

            var michael = new Consumer("老王");

            //dealer.NewCarInfo += michael.NewCarIsHere;
            // WeakCarInfoEventManager.AddListener(dealer, michael);
            WeakEventManager <CarDealer, CarInfoEventArgs> .AddHandler(dealer, "NewCarInfo", michael.NewCarIsHere);



            dealer.NewCar("法拉利");

            var sebastian = new Consumer("老张");

            //dealer.NewCarInfo += sebastian.NewCarIsHere;
            //WeakCarInfoEventManager.AddListener(dealer, sebastian);
            WeakEventManager <CarDealer, CarInfoEventArgs> .AddHandler(dealer, "NewCarInfo", sebastian.NewCarIsHere);


            dealer.NewCar("奔驰");
            //dealer.NewCarInfo -= michael.NewCarIsHere;
            //WeakCarInfoEventManager.RemoveListener(dealer, michael);
            WeakEventManager <CarDealer, CarInfoEventArgs> .RemoveHandler(dealer, "NewCarInfo", michael.NewCarIsHere);

            dealer.NewCar("奥迪");

            Console.ReadKey();
        }
Esempio n. 15
0
        public static void Main()
        {
            Cns.WriteLine("Chapter 08!");

            Delegates.DemoDelegates();

            LambdaExpressions.MidL();
            Cns.WriteLine(
                $"{LambdaExpressions.StringToUpper("Test all goes to upper through one Parm Lambda function")}");
            Cns.WriteLine($"{LambdaExpressions.twoToUpper("two Parm Lambda function ()")}");

            LambdaExpressions.lambdaExamples();

            SandPit.Test();

            //Car Dealer and Delgate Events
            var dealer = new CarDealer();

            //New customer
            var michelle = new Consumer("Michelle");

            dealer.NewCarInfo += michelle.NewCarIsHere;

            dealer.NewCar("Lotus");

            var christine = new Consumer("Chrissie");

            dealer.NewCarInfo += christine.NewCarIsHere;

            dealer.NewCar("Mini");

            dealer.NewCarInfo -= michelle.NewCarIsHere;
            dealer.NewCar("BMW 325i");
            dealer.NewCarInfo -= christine.NewCarIsHere;
            System.GC.Collect();

            //Just to stop the console disapearing...

            //Weak Class Listeners
            var wendy = new WeakConsumer("Wendy");

            WeakCarInfoEM.AddListener(dealer, wendy);
            dealer.NewCar("Willie Wonker Wanger");
            WeakCarInfoEM.RemoveListener(dealer, wendy);
            dealer.NewCar("Nothing Today");
            System.GC.Collect();

            //Generic WeakEvent
            var gCus = new Consumer("Gena");

            WeakEventManager <CarDealer, CarInfoEventsArgs> .AddHandler(dealer, "NewCarInfo", gCus.NewCarIsHere);

            dealer.NewCar("Genevieve");

            WeakEventManager <CarDealer, CarInfoEventsArgs> .RemoveHandler(dealer, "NewCarInfo", gCus.NewCarIsHere);

            dealer.NewCar("Renault");

            Cns.ReadKey();
        }
Esempio n. 16
0
        private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            BindingOperations.ClearBinding(Icon, CrispImage.MonikerProperty);

            if (e.OldValue != null)
            {
                WeakEventManager <CmdBase, CmdBase.EditModeChangedEventArgs> .RemoveHandler((CmdBase)e.OldValue, nameof(CmdBase.EditModeChanged), OnItemEditModeChanged);
            }

            if (e.NewValue != null)
            {
                WeakEventManager <CmdBase, CmdBase.EditModeChangedEventArgs> .AddHandler((CmdBase)e.NewValue, nameof(CmdBase.EditModeChanged), OnItemEditModeChanged);

                if (e.NewValue is CmdContainer con)
                {
                    MultiBinding bind = new MultiBinding
                    {
                        Mode      = BindingMode.OneWay,
                        Converter = new ItemMonikerConverter()
                    };
                    bind.Bindings.Add(new Binding {
                        Source = con
                    });
                    bind.Bindings.Add(new Binding
                    {
                        Source = con,
                        Path   = new PropertyPath(nameof(CmdContainer.IsExpanded))
                    });
                    Icon.SetBinding(CrispImage.MonikerProperty, bind);
                }
            }
        }
Esempio n. 17
0
        private void OnRequestClose(object sender, RequestCloseEventArgs e)
        {
            DialogResult = e.DialogResult;
            Close();

            WeakEventManager <IDialogViewModel, RequestCloseEventArgs> .RemoveHandler(DataContext as IDialogViewModel, "RequestClose", OnRequestClose);
        }
 private static void RemoveInstanceEventHandler <T, U>(string eventName, T eventSource, EventHandler <U> handler) where U : EventArgs
 {
     WeakEventManager <T, U> .RemoveHandler(
         eventSource,
         eventName,
         handler);
 }
Esempio n. 19
0
        static void Main(string[] args)
        {
            //通过事件,直接连接到发布程序和侦听器。但垃圾回收有一个问题。例如,如果侦听器不再直接引用,发布程序就仍有一个引用。垃圾回收器不能清空侦听器占用的内存,因为发布程序仍保有一个引用,会针对侦听器触发事件。
            //使用弱事件侦听器;为了避免出现资源泄露


            var dealer = new CarDealer();

            var michael = new Consumer("Michael");

            WeakEventManager <CarDealer, CarInfoEventArgs> .AddHandler(dealer, "NewCarInfo", michael.NewCarIsHere);

            dealer.NewCar("Mercedes");

            var sebastian = new Consumer("Sebastian");

            WeakEventManager <CarDealer, CarInfoEventArgs> .AddHandler(dealer, "NewCarInfo", sebastian.NewCarIsHere);

            dealer.NewCar("Ferrari");

            WeakEventManager <CarDealer, CarInfoEventArgs> .RemoveHandler(dealer, "NewCarInfo", michael.NewCarIsHere);

            dealer.NewCar("Red Bull Racing");


            Console.ReadKey();
        }
Esempio n. 20
0
        public override void Cleanup()
        {
            base.Cleanup();
            WeakEventManager <MainViewModel, PropertyChangedEventArgs> .RemoveHandler(this, "PropertyChanged", this_PropertyChanged);

            InteraccionViewModel.frmInteraccionViewModelMsg.Unregister(this, handlefrmInteraccionViewModelMessage);
        }
Esempio n. 21
0
 private void dettachEvents()
 {
     if (_monthAppointments == null)
     {
         return;
     }
     WeakEventManager <ObservableCollection <Appointment>, NotifyCollectionChangedEventArgs> .RemoveHandler(_monthAppointments, "CollectionChanged", parentCollection_CollectionChanged);
 }
Esempio n. 22
0
 public void Dispose()
 {
     foreach (var source in _sources)
     {
         WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .RemoveHandler(source, nameof(INotifyPropertyChanged.PropertyChanged),
                                                                                            SourceWrapper_PropertyChanged);
     }
 }
Esempio n. 23
0
        void RootVisual_Loaded(object sender, RoutedEventArgs e)
        {
            // Detach the event
            WeakEventManager <Window, RoutedEventArgs> .RemoveHandler(App.RootVisual, "Loaded", RootVisual_Loaded);

            // close loading window
            _loadingView.Close();
        }
Esempio n. 24
0
        private void dettachEvents()
        {
            WeakEventManager <SUPSyncListener, EventArgs> .RemoveHandler(SyncListener, "SyncStarted", SyncListener_SyncStarted);

            WeakEventManager <SUPSyncListener, EventArgs> .RemoveHandler(SyncListener, "SyncCanceled", SyncListener_SyncCanceled);

            WeakEventManager <SUPSyncListener, EventArgs> .RemoveHandler(SyncListener, "SyncFinished", SyncListener_SyncFinished);
        }
Esempio n. 25
0
 public void Dispose()
 {
     if (_element != null)
     {
         WeakEventManager<FrameworkElement, MouseEventArgs>.RemoveHandler(_element, "MouseEnter", MouseEnter);
         WeakEventManager<FrameworkElement, MouseEventArgs>.RemoveHandler(_element, "MouseLeave", MouseLeave);
     }
 }
        private void Popup_Closed(object sender, EventArgs e)
        {
            var win = Window.GetWindow(this);

            if (win != null)
            {
                WeakEventManager <Window, MouseButtonEventArgs> .RemoveHandler(win, nameof( MouseDown ), OnWindowMouseDown);
            }
        }
Esempio n. 27
0
 private void Unload()
 {
     if (!_loaded)
     {
         return;
     }
     WeakEventManager <IBaseAcObjectObservableCollection, EventArgs> .RemoveHandler(WeatherManager.Instance.WrappersList,
                                                                                    nameof(IBaseAcObjectObservableCollection.CollectionReady), OnWeatherListUpdated);
 }
Esempio n. 28
0
 public static void UnsubscribeWeak([CanBeNull] this INotifyPropertyChanged obj, [CanBeNull] EventHandler <PropertyChangedEventArgs> onPropertyChanged)
 {
     if (obj == null || onPropertyChanged == null)
     {
         return;
     }
     WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .RemoveHandler(obj, nameof(INotifyPropertyChanged.PropertyChanged),
                                                                                        onPropertyChanged);
 }
Esempio n. 29
0
 public void Dispose()
 {
     if (_notify == null)
     {
         return;
     }
     WeakEventManager <INotifyCollectionChanged, NotifyCollectionChangedEventArgs> .RemoveHandler(_notify, nameof(_notify.CollectionChanged),
                                                                                                  OnItemsSourceCollectionChanged);
 }
Esempio n. 30
0
            public void Dispose()
            {
                WeakEventManager <AcItemWrapper, WrappedValueChangedEventArgs> .RemoveHandler(_wrapper, nameof(AcItemWrapper.ValueChanged), Wrapper_ValueChanged);

                if (_wrapper.IsLoaded)
                {
                    WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .AddHandler(_wrapper.Value, nameof(INotifyPropertyChanged.PropertyChanged),
                                                                                                    Value_PropertyChanged);
                }
            }
 public void RemoveHandlerShouldRemoveAddedHandler()
 {
     var target = new WeakEventManager<EventHandler, EventArgs>();
     EventHandler handler = DefaultAction.None;
     target.AddHandler( handler );
     Assert.True( target.RemoveHandler( handler ) );
 }
 public void RemoveHandlerShouldNotRemoveUnaddedHandler()
 {
     var target = new WeakEventManager<EventHandler, EventArgs>();
     EventHandler handler1 = ( s, e ) =>
     {
     };
     EventHandler handler2 = ( s, e ) =>
     {
     };
     target.AddHandler( handler1 );
     Assert.False( target.RemoveHandler( handler2 ) );
 }