私のgoogleとstackoverflow search-fuは私に失敗しているので、私はコミュニティにこの質問を提示します。StackPanelの中のグリッド:autoと*はなぜ変わったのですか?
(これは、すべての空白デフォルトWPFソリューションでは、VS2010と.NET 4.0を使用して生成される)以下のXAML考えてみましょう:あなたが "aborder2" の幅を予測する何
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Name="aborder" Grid.Column="0" Grid.ColumnSpan="2"
Background="Red" Width="200"/>
<Border Name="aborder2" Background="Green"/>
</Grid>
</StackPanel>
をあれ?
「20ピクセル」を推測した場合、間違っています。正解は110ピクセルです。
は、このXAMLを考えてみましょう:
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Border Name="aborder" Grid.Column="0" Grid.ColumnSpan="2"
Background="Red" Width="200"/>
<Border Name="aborder2" Background="Green"/>
</Grid>
</StackPanel>
あなたがする "aborder2" の幅をどう予測するのでしょうか?
20ピクセルまたは110ピクセルのいずれかを推測した場合、間違っています。正解は200ピクセルです。
私はこれを理解することができず、それは私を狂ってしまう。答えは明白でなければならないようです。自動的に塗りつぶされたグリッド列と、グリッドをフリッカアウトさせるスタックパネルとの間には、ある程度の相互作用があることは明らかです。しかし、それはちょうど感覚を作るように見えない - この行動を支配しているどんなルールも任意であるようです。なぜ110ピクセルですか?なぜ109ピクセルか100ピクセルですか?私は、自動サイズの列が完全に何かを展開することができなかった場合、固定幅の列をランダムに無視して幅を無視すると、私は開発者のシェルが焼けたままになってしまったかどうかを理解できます。
ヘルプやガイドランプがあれば幸いです。
としてレンダリングするために列1を強制的に設定することができますか? – 0x4f3759df
私はそれがデフォルトで列0になるべきだから私は1つを置くとは思わなかった。私はそれをテストし、明示的に列を設定しても違いはないようだ。 – pfw
答えがありますが、最初に家に帰る必要があります –