public ControlDetailsViewModel(IVisual control)
        {
            if (control is AvaloniaObject avaloniaObject)
            {
                Properties = AvaloniaPropertyRegistry.Instance.GetRegistered(avaloniaObject)
                             .Concat(AvaloniaPropertyRegistry.Instance.GetRegisteredAttached(avaloniaObject.GetType()))
                             .Select(x => new PropertyDetails(avaloniaObject, x))
                             .OrderBy(x => x.Priority, s_priorityComparer)
                             .ThenBy(x => x.IsAttached)
                             .ThenBy(x => x.Name);

                var view = new CollectionViewBase(Properties);
                view.GroupDescriptions.Add(new PathGroupDescription(nameof(PropertyDetails.Group)));
                view.Filter    = FilterProperty;
                PropertiesView = view;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates a collection view around the DataGrid's source. ICollectionViewFactory is
        /// used if the source implements it. Otherwise a PagedCollectionView is returned.
        /// </summary>
        /// <param name="source">Enumerable source for which to create a view</param>
        /// <returns>ICollectionView view over the provided source</returns>
        internal static ICollectionView CreateView(IEnumerable source)
        {
            Debug.Assert(source != null, "source unexpectedly null");
            Debug.Assert(!(source is ICollectionView), "source is an ICollectionView");

            ICollectionView collectionView = null;

            if (source is ICollectionViewFactory collectionViewFactory)
            {
                // If the source is a collection view factory, give it a chance to produce a custom collection view.
                collectionView = collectionViewFactory.CreateView();
                // Intentionally not catching potential exception thrown by ICollectionViewFactory.CreateView().
            }
            if (collectionView == null)
            {
                // If we still do not have a collection view, default to a PagedCollectionView.
                collectionView = new CollectionViewBase(source);
            }
            return(collectionView);
        }