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