Beispiel #1
0
        public static void Create()
        {
            var person = new Person {
                FirstName = "Johan", LastName = "Larsson"
            };
            var persons = new[] { person };

            using var view = new TransposedItemsSource(persons);
            Assert.AreEqual(2, view.Count);
            var row0 = view[0];

            Assert.AreEqual(typeof(string), row0.GetProperties()[0].ComponentType);
            Assert.AreEqual("Name", row0.GetProperties()[0].Name);
            Assert.AreEqual(nameof(Person.FirstName), row0.GetProperties()[0].GetValue(row0));

            Assert.AreEqual("C0", row0.GetProperties()[1].Name);
            Assert.AreEqual("Johan", row0.GetProperties()[1].GetValue(row0));

            var row1 = view[1];

            Assert.AreEqual(typeof(string), row1.GetProperties()[0].ComponentType);
            Assert.AreEqual("Name", row1.GetProperties()[0].Name);
            Assert.AreEqual(nameof(Person.LastName), row1.GetProperties()[0].GetValue(row1));

            Assert.AreEqual("C0", row1.GetProperties()[1].Name);
            Assert.AreEqual("Larsson", row1.GetProperties()[1].GetValue(row1));
        }
        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);
            dataGrid.RaiseEvent(new RoutedEventArgs(Events.ColumnsChanged));
        }
        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, true);
        }
        public void Create()
        {
            var person = new Person { FirstName = "Johan", LastName = "Larsson" };
            var persons = new[] { person };
            var view = new TransposedItemsSource(persons);

            Assert.AreEqual(2, view.Count);
            var row0 = view[0];
            Assert.AreEqual(typeof(string), row0.GetProperties()[0].ComponentType);
            Assert.AreEqual("Name", row0.GetProperties()[0].Name);
            Assert.AreEqual(nameof(Person.FirstName), row0.GetProperties()[0].GetValue(row0));

            Assert.AreEqual("C0", row0.GetProperties()[1].Name);
            Assert.AreEqual("Johan", row0.GetProperties()[1].GetValue(row0));

            var row1 = view[1];
            Assert.AreEqual(typeof(string), row1.GetProperties()[0].ComponentType);
            Assert.AreEqual("Name", row1.GetProperties()[0].Name);
            Assert.AreEqual(nameof(Person.LastName), row1.GetProperties()[0].GetValue(row1));

            Assert.AreEqual("C0", row1.GetProperties()[1].Name);
            Assert.AreEqual("Larsson", row1.GetProperties()[1].GetValue(row1));
        }