水平ヘッダーと垂直ヘッダーの両方を持つテーブルが必要です (単純な 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) を持つグリッドで構成されており、Content-ColumnDefinitions に従って Header-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);
...
したがって、Header-Column はその Width を Content-Column と共有する必要があります。しかし、プログラムを実行すると、列が跳ね返り、無限ループでサイズ変更されます。行の高さの共有は正常に機能します。どこに問題があるのでしょうか?
ヘッダー (grdHorizontalHeader) のEDIT列のみがサイズ変更されます。grdContent の列の幅が正しく安定しています。