下のWPFグリッドでは、中央の列は6ではありません。テキストBは、テキストAから6離れているのではなく、右端にあります。他の列に対してAutoの代わりに*を試しましたが、結果は同じです。
真ん中の列を6にするにはどうすればよいですか?回避策はありますか?なぜそれが起こっているのですか?それは意図された動作ですか、それともバグですか?
すべての要素にマージンを設定する必要がないように、この方法でグリッドを作成します。
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="6" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.ColumnSpan="3" Grid.Column="0" HorizontalAlignment="Left">xxxxxxxxxxxxxxxxxxxxxxxxxxxx</TextBlock>
<TextBlock Grid.Row="2">Text A</TextBlock>
<Rectangle Fill="YellowGreen" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Stretch" />
<TextBlock Grid.Row="2" Grid.Column="2" Background="LightCoral">Text B</TextBlock>
</Grid>
</ScrollViewer>
注:私のウィンドウ幅は自動です。
編集:@flqのソリューションを使用しますが、水平スクロールを備えたscrollviewerを追加すると、問題が再発します。これはおそらく、ソリューションがデザイナーに正しく表示されないのと同じ理由です。これは、幅を制限せずに幅を計算する方法がわからないWPFと関係があります。