private static void UpdateItemsSource(DataGrid dataGrid)
        {
            IEnumerable view       = null;
            var         rowsSource = (IEnumerable <IEnumerable>)dataGrid.GetRowsSource();

            if (rowsSource != null)
            {
                view = new Lists2DView(rowsSource);
            }

            var colsSource = (IEnumerable <IEnumerable>)dataGrid.GetColumnsSource();

            if (colsSource != null)
            {
                view = new Lists2DTransposedView(colsSource);
            }

            var transposedSource = dataGrid.GetTransposedSource();

            if (transposedSource != null)
            {
                view = new TransposedItemsSource(transposedSource);
            }

            dataGrid.Bind(ItemsControl.ItemsSourceProperty)
            .OneWayTo(view)
            .IgnoreReturnValue();
            dataGrid.RaiseEvent(new RoutedEventArgs(Events.ColumnsChangedEvent));
        }
Example #2
0
        internal TransposedRow(
            TransposedItemsSource source,
            PropertyDescriptor property)
        {
            this.Source   = source;
            this.Property = property;
            var count = source.Source.Count();
            var propertyDescriptors = new PropertyDescriptor[count + 1];

            propertyDescriptors[0] = new NamePropertyDescriptor(property);
            for (int i = 0; i < count; i++)
            {
                propertyDescriptors[i + 1] = new TransposedPropertyDescriptor(i, property);
            }

            this.properties = new PropertyDescriptorCollection(propertyDescriptors, readOnly: true);
        }
Example #3
0
        private static void UpdateItemsSource(DataGrid dataGrid)
        {
            IEnumerable view = null;

            if (dataGrid.GetRowsSource() is IEnumerable <IEnumerable> rowsSource)
            {
                view = new Lists2DView(rowsSource);
            }
            else if (dataGrid.GetColumnsSource() is IEnumerable <IEnumerable> colsSource)
            {
                view = new Lists2DTransposedView(colsSource);
            }
            else if (dataGrid.GetTransposedSource() is IEnumerable transposedSource)
            {
                view = new TransposedItemsSource(transposedSource);
            }

            _ = dataGrid.Bind(ItemsControl.ItemsSourceProperty)
                .OneWayTo(view);
            dataGrid.RaiseEvent(new RoutedEventArgs(Events.ColumnsChangedEvent));
        }