<Grid> <!-- 未指定 Width -->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock>123456789</TextBlock> <!-- 默認在第 0 列 -->
</Grid>
結果:第一列被長文本撐開,兩列不再等寬。
Grid 在 未限制可用寬度(即自身 Width=Auto)時,* 列退化為 Auto 行為,按內容測量寬度分配空間。
<Grid MaxWidth="800"> <!-- 或寬度綁定父容器 ActualWidth -->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="123456789" TextTrimming="CharacterEllipsis"/>
</Grid>
父容器(如 Window、Border、ScrollViewer)必須給 Grid 傳遞確定的佈局槽位。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Col1"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="Col2"/>
</Grid.ColumnDefinitions>
</Grid>
需在父級設置 Grid.IsSharedSizeScope="True"。適合多行對齊場景。
<UniformGrid Columns="2">
<TextBlock>123456789</TextBlock>
<TextBlock>第二列</TextBlock>
</UniformGrid>
UniformGrid 強制所有列等寬、所有行等高,無需定義 ColumnDefinitions。
星號列(*)只有在 Grid 擁有確定可用寬度(非 Auto)時才按比例分配。 讓 Grid 置於有確定寬度的父容器中,或顯式給 Grid 寬度/MaxWidth。