Exemplo n.º 1
0
        public ItemsSourceView(object source)
        {
            if (source == null)
            {
                throw new ArgumentNullException("Argument 'source' is null.");
            }

            var list = source as IList;

            if (list != null)
            {
                m_vector = list;
                ListenToCollectionChanges();
            }
            else
            {
                var enumerable = source as IEnumerable;
                if (enumerable != null)
                {
                    m_vector = WrapIterable(enumerable);
                }
                throw new ArgumentException("Argument 'source' is not a supported vector.");
            }

            m_uniqueIdMaping = source as IKeyIndexMapping;
        }
Exemplo n.º 2
0
    public ItemsSourceView(object source)
    {
        if (source == null)
        {
            throw new ArgumentNullException("Argument 'source' is null.");
        }

        if (source is IList <object> vector)
        {
            m_vector = vector;
            ListenToCollectionChanges(vector);
        }
        else
        {
            // The bindable interop interface are abi compatible with the corresponding
            // WinRT interfaces.
            if (source is _IBindableVector bindableVector)             // IList
            {
                m_vector = ListAdapter.ToGeneric(bindableVector);
                ListenToCollectionChanges(bindableVector);
            }
            else if (source is IReadOnlyList <object> readOnlyList)
            {
                m_vectorView = readOnlyList;
                ListenToCollectionChanges(readOnlyList);
            }
            else
            {
                if (source is IEnumerable <object> iterable)
                {
                    m_vector = WrapIterable(iterable);
                }
                else
                {
                    if (source is _IBindableIterable bindableIterable)
                    {
                        m_vector = WrapIterable(bindableIterable);
                    }
                    else
                    {
                        throw new ArgumentException("Argument 'source' is not a supported vector.");
                    }
                }
            }
        }

        m_uniqueIdMaping = source as IKeyIndexMapping;
    }