Example #1
0
 public void RemoveCanExecuteChanged(OnEventHandlerAdapter <CanExecuteChangedEventArgsAdapter> callback)
 {
     this.CanExecuteChangedCallbackAdapter.Value.RemoveCallbackEventHandler(
         this.Interface,
         NativeMethods.Command_RemoveCanExecuteChanged,
         callback);
 }
Example #2
0
 public void RemoveNotifyCollectionChanged(OnEventHandlerAdapter <NotifyCollectionChangedEventArgsAdapter> callback)
 {
     this.NotifyCollectionChangedCallbackAdapter.Value.RemoveCallbackEventHandler(
         this.Interface,
         NativeMethods.ObservableCollection_RemoveNotifyCollectionChanged,
         callback);
 }
Example #3
0
 public void RemoveCompleted(OnEventHandlerAdapter <CompletedEventArgsAdapter> callback)
 {
     this.CompletedCallbackAdapter.Value.RemoveCallbackEventHandler(
         this.Interface,
         NativeMethods.AsyncOperation_RemoveCompleted,
         callback);
 }
Example #4
0
        internal void AddCallbackEventHandler(
            IntPtr pInterface,
            AttachCallbackEventHandlerDelegate pInvokeAttach,
            OnEventHandlerAdapter <T> callback)
        {
            NativeMethods.OnCallbackEventHandler callbackAdapter = (IntPtr pEventArgs) =>
            {
                try
                {
                    var ctorInfo = typeof(T).GetTypeInfo().DeclaredConstructors.Single(
                        ci => ci.GetParameters().Length > 0 &&
                        ci.GetParameters()[0].ParameterType == typeof(IntPtr));
                    var eventArgsAdapter = (T)ctorInfo.Invoke(new object[] { pEventArgs });
                    callback(eventArgsAdapter);
                }
                catch (Exception)
                {
                    return(-1);
                }
                return(0);
            };

            IntPtr pEventHandler = IntPtr.Zero;

            PInvokeUtils.ThrowIfResult(pInvokeAttach(pInterface, callbackAdapter, ref pEventHandler));
            this.Callbacks.Value.Add(callback, new Tuple <IntPtr, NativeMethods.OnCallbackEventHandler>(pEventHandler, callbackAdapter));
        }
Example #5
0
 public void RemoveEventModelEvent(OnEventHandlerAdapter <EventModelEventArgsAdapter> callback)
 {
     EventModelCallbackAdapter.Value.RemoveCallbackEventHandler(
         this.Interface,
         NativeMethods.ObservableObject_RemoveEventModelEvent,
         callback);
 }
Example #6
0
 public void RemoveNotifyPropertyChanged(OnEventHandlerAdapter <PropertyChangedEventArgsAdapter> callback)
 {
     PropertyChangedCallbackAdapter.Value.RemoveCallbackEventHandler(
         this.Interface,
         NativeMethods.ObservableObject_RemoveNotifyPropertyChanged,
         callback);
 }
Example #7
0
        internal void RemoveCallbackEventHandler(
            IntPtr pInterface,
            DetachCallbackEventHandlerDelegate pInvokeDetach,
            OnEventHandlerAdapter <T> callback)
        {
            Tuple <IntPtr, NativeMethods.OnCallbackEventHandler> tuple;

            if (!this.Callbacks.Value.TryGetValue(callback, out tuple))
            {
                throw new InvalidOperationException("Callback not registered");
            }
            PInvokeUtils.ThrowIfResult(pInvokeDetach(pInterface, tuple.Item1));
            NativeMethods.Inspectable_Release(tuple.Item1);
            this.Callbacks.Value.Remove(callback);
        }