Я много искал, но не смог найти подходящего решения.Я новичок в 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
.
Это первый раз, когда я задаю вопрос.Надеюсь, моя проблема вполне понятна.