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)); }