Ejemplo n.º 1
0
        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));
     }
 }
Ejemplo n.º 3
0
        /// <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;
            }
        }
Ejemplo n.º 4
0
        /// <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);
            }
        }
Ejemplo n.º 6
0
        /// <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));
        }