Ejemplo n.º 1
0
        private static IntPtr CreateNativeNCCEventArgsInstanceHelper(int action, IntPtr newItem, IntPtr oldItem, int newIndex, int oldIndex)
        {
            if (s_EventArgsFactory == null)
            {
                object factory = null;
                Guid   guid    = typeof(INotifyCollectionChangedEventArgsFactory).GUID;
                int    hr      = Interop.mincore.RoGetActivationFactory(WinRTNotifyCollectionChangedEventArgsName, ref guid, out factory);
                if (hr < 0)
                {
                    Marshal.ThrowExceptionForHR(hr);
                }

                s_EventArgsFactory = (INotifyCollectionChangedEventArgsFactory)factory;
            }

            IntPtr inner = IntPtr.Zero;

            return(s_EventArgsFactory.CreateInstanceWithAllParameters(action, newItem, oldItem, newIndex, oldIndex, IntPtr.Zero, ref inner));
        }
Ejemplo n.º 2
0
        // Extracts properties from a managed NotifyCollectionChangedEventArgs and passes them to
        // a VM-implemented helper that creates a WinRT NotifyCollectionChangedEventArgs instance.
        // This method is called from IL stubs and needs to have its token stabilized.
        internal static IntPtr ConvertToNative(NotifyCollectionChangedEventArgs managedArgs)
        {
            if (managedArgs == null)
                return IntPtr.Zero;

            if (s_EventArgsFactory == null)
            {
                object factory = null;
                Guid guid = typeof(INotifyCollectionChangedEventArgsFactory).GUID;
                int hr = Interop.mincore.RoGetActivationFactory(WinRTNotifyCollectionChangedEventArgsName, ref guid, out factory);
                if (hr < 0)
                    Marshal.ThrowExceptionForHR(hr);

                s_EventArgsFactory = (INotifyCollectionChangedEventArgsFactory)factory;
            }

            object inner = null;
            return s_EventArgsFactory.CreateInstanceWithAllParameters((int)managedArgs.Action, managedArgs.NewItems, managedArgs.OldItems, managedArgs.NewStartingIndex, managedArgs.OldStartingIndex, null, ref inner);
        }