Мне нужна таблица с горизонтальным и вертикальным заголовком (простой PivotGrid). Я нашел здесь несколько похожих (или почти одинаковых) проблем, но никто не дал решения. В XAML я определил эту структуру:
<Grid x:Name="grdMain" Background="White" Grid.IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.Column="1" x:Name="grdHorizontalHeader">
<!-- place for column definitions and header labels defined in code -->
</Grid>
<Grid Grid.Row="1" Grid.Column="0" x:Name="grdVerticalHeader">
<!-- place for column definitions and header labels defined in code -->
</Grid>
<Grid Grid.Row="1" Grid.Column="1" x:Name="grdContent">
<!-- place for column definitions and header labels defined in code -->
</Grid>
</Grid>
Таким образом, оба заголовка состоят из сетки с некоторыми значениями ColumnDefinitions (или RowDefinitions), и мне нужно определить размер Header-ColumnDefinitions в соответствии с Content-ColumnDefinitions. Я делаю это в коде:
foreach (var row in myColumnSource)
{
// Content columns definitions
var cD = new ColumnDefinition();
cD.Width = GridLength.Auto;
cD.SharedSizeGroup = "ColumnSharedSizeGroup" + row.Value;
this.grdContent.ColumnDefinitions.Add(cD);
// Header columns definitions
var cD2 = new ColumnDefinition();
cD2.Width = GridLength.Auto;
cD2.SharedSizeGroup = "ColumnSharedSizeGroup" + row.Value;
this.grdHorizontalHeader.ColumnDefinitions.Add(cD2);
...
Таким образом, заголовок-столбец должен делиться шириной с столбцом содержимого. Но когда я запускаю программу, столбцы отскакивают и изменяют размеры в бесконечном цикле. Распределение высоты строки работает нормально. Где может быть проблема?
РЕДАКТИРОВАТЬ только столбцы в заголовке (grdHorizontHeader) изменяют размер. Столбцы в grdContent имеют правильную и стабильную ширину.