Динамический TableView WPF с настраиваемым RowHeader и настраиваемым ColumnHeader с использованием ItemsControl - PullRequest
0 голосов
/ 17 декабря 2018

Я много искал, но не смог найти подходящего решения.Я новичок в WPF и хочу создать TableView с пользовательским RowHeaders и пользовательским ColumnHeaders.Оба должны быть созданы динамически во время выполнения.(Загружено из БД MySQL) Я пытался решить эту проблему с помощью ItemsControl и UniformGrid.

C #

 public CompositeCollection Data
    {
        get
        {
            var temp = new CompositeCollection();
            temp.Add(new CollectionContainer() { Collection = ColumnHeaders });
            temp.Add(new CollectionContainer() { Collection = RowHeaders });
            return temp;
        }
    }

XML:

       <ItemsControl Name="Table" ItemsSource="{Binding Data}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Rows="20" Columns="20"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.Resources>
            <DataTemplate DataType="{x:Type data:ColumnHeader}">
                <TextBlock Text="{Binding Content}" Grid.Row="0" Grid.Column="{Binding ID}"/>
            </DataTemplate>
            <DataTemplate DataType="{x:Type data:RowHeader}">
                <TextBlock Text="{Binding Content}" Grid.Row="{Binding ID}" Grid.Column="0"/>
            </DataTemplate>
        </ItemsControl.Resources>
       </ItemsControl>

(ID == RowIndex или ColumnIndex в зависимости от класса) идея заключалась в том, чтобы работать с 3 DataTemplates (RowHeader, ColumnHeader, Content), пока это работает.(Content-Class имеет свойство ColumnIndex и RowIndex для размещения его в таблице так же, как и для привязки заголовков)

Мой вопрос: я понял, что UniformGrid не будет работать для моего решения.Но я понятия не имею, как настроить ItemsPanelTemplate как Grid с динамическими строками и столбцами, используя Grid или что-то еще.Я хочу связать их со свойством RowCount и ColumnCount.

Это первый раз, когда я задаю вопрос.Надеюсь, моя проблема вполне понятна.

...