Exemplo n.º 1
0
        private static void OnItemsSourcePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            MyVirtualizingPanel virtualizingPanel = d as MyVirtualizingPanel;

            if (virtualizingPanel == null)
            {
                return;
            }
            virtualizingPanel.ClearItems();
            INotifyCollectionChanged collection1 = e.OldValue as INotifyCollectionChanged;

            if (collection1 != null)
            {
                virtualizingPanel.UnhookCollectionChanged(collection1);
            }
            INotifyCollectionChanged collection2 = e.NewValue as INotifyCollectionChanged;

            if (collection2 == null)
            {
                return;
            }
            List <IVirtualizable> virtualizableList = new List <IVirtualizable>();

            foreach (object obj in (IEnumerable)(collection2 as ICollection))
            {
                if (obj is IVirtualizable)
                {
                    virtualizableList.Add(obj as IVirtualizable);
                }
            }
            virtualizingPanel.AddItems((IEnumerable <IVirtualizable>)virtualizableList);
            virtualizingPanel.HookUpCollectionChanged(collection2);
        }
Exemplo n.º 2
0
        private static void OnItemsSourcePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            MyVirtualizingPanel virtualizingPanel = d as MyVirtualizingPanel;

            if (virtualizingPanel == null)
            {
                return;
            }
            virtualizingPanel.ClearItems();
            // ISSUE: explicit reference operation
            INotifyCollectionChanged oldValue = e.OldValue as INotifyCollectionChanged;

            if (oldValue != null)
            {
                virtualizingPanel.UnhookCollectionChanged(oldValue);
            }
            // ISSUE: explicit reference operation
            INotifyCollectionChanged newValue = e.NewValue as INotifyCollectionChanged;

            if (newValue == null)
            {
                return;
            }
            List <IVirtualizable> virtualizableList = new List <IVirtualizable>();
            IEnumerator           enumerator        = (newValue as ICollection).GetEnumerator();

            try
            {
                while (enumerator.MoveNext())
                {
                    object current = enumerator.Current;
                    if (current is IVirtualizable)
                    {
                        virtualizableList.Add(current as IVirtualizable);
                    }
                }
            }
            finally
            {
                IDisposable disposable = enumerator as IDisposable;
                if (disposable != null)
                {
                    disposable.Dispose();
                }
            }
            virtualizingPanel.AddItems((IEnumerable <IVirtualizable>)virtualizableList);
            virtualizingPanel.HookUpCollectionChanged(newValue);
        }