private void RegisterExitEvent() { if (!_eventRegistered) { var property = Type.GetType("System.AppDomain").GetRuntimeProperty("CurrentDomain"); var currentDomain = property.GetValue(null); EventUtilities.RegisterEvent(currentDomain, "ProcessExit", (sender, args) => WriteConfiguration()); _eventRegistered = true; } }
private void TrackCollection() { if (InternalCollection is INotifyCollectionChanged items) { var collection = items; _itemsChangedHandler = EventUtilities.RegisterEvent <TrackableCollection <TItem>, NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>( this, h => collection.CollectionChanged += h, h => collection.CollectionChanged -= h, h => (o, e) => h(o, e), (subscriber, s, e) => subscriber.OnOriginalCollectionChanged(s, e)); } }
/// <summary>Removes a back key pressed handler for a given page. </summary> /// <param name="page">The page. </param> public void Remove(MtPage page) { _handlers.Remove(_handlers.Single(h => h.Item1 == page)); if (_handlers.Count == 0) { #if WINDOWS_UAP SystemNavigationManager.GetForCurrentView().BackRequested -= OnBackKeyPressed; #else EventUtilities.DeregisterStaticEvent(_hardwareButtonsType, "BackPressed", _registrationToken); #endif _isEventRegistered = false; } }
/// <summary>Removes a back key pressed handler for a given page. </summary> /// <param name="page">The page. </param> public void Remove(MtPage page) { _handlers.Remove(_handlers.Single(h => h.Item1 == page)); if (_handlers.Count == 0) { #if WINDOWS_UAP_UNUSED HardwareButtons.BackPressed -= OnBackKeyPressed; #else EventUtilities.DeregisterStaticEvent(_hardwareButtonsType, "BackPressed", _registrationToken); #endif _isEventRegistered = false; } }
private void RegisterEvent(TItem item) { if (_events.ContainsKey(item)) { return; } if (item is INotifyPropertyChanged i) { var handler = EventUtilities.RegisterEvent <TrackableCollection <TItem>, PropertyChangedEventHandler, PropertyChangedEventArgs>( this, h => i.PropertyChanged += h, h => i.PropertyChanged -= h, h => (o, e) => h(o, e), (subscriber, s, e) => subscriber.OnCollectionItemPropertyChanged(s, e)); _events.Add(item, handler); } }
/// <summary>Adds a back key handler for a given page. </summary> /// <param name="page">The page. </param> /// <param name="handler">The handler. </param> public void Add(MtPage page, Func <object, bool> handler) { if (!_isEventRegistered) { #if WINDOWS_UAP SystemNavigationManager.GetForCurrentView().BackRequested += OnBackKeyPressed; #else if (_hardwareButtonsType == null) { _hardwareButtonsType = Type.GetType( "Windows.Phone.UI.Input.HardwareButtons, " + "Windows, Version=255.255.255.255, Culture=neutral, " + "PublicKeyToken=null, ContentType=WindowsRuntime"); } _registrationToken = EventUtilities.RegisterStaticEvent(_hardwareButtonsType, "BackPressed", OnBackKeyPressed); #endif _isEventRegistered = true; } _handlers.Insert(0, new Tuple <MtPage, Func <object, bool> >(page, handler)); }