Width通过设置为 来使三列具有相同的宽度Auto。
<Grid x:Name="myGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0">One</Label>
<Label Grid.Row="0" Grid.Column="1" x:Name="label1">Two</Label>
<Label Grid.Row="0" Grid.Column="2">Three</Label>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我想实现的是,如果中间列折叠或隐藏,则其他两列占用剩余空间并获得相同的宽度。
如果我只是因为宽度=“*”而将可见性设置为折叠或隐藏,则其他两列宽度保持不变。
<Label Grid.Row="0" Grid.Column="1" Visibility="Collapsed">Two</Label>
Run Code Online (Sandbox Code Playgroud)
我通过以编程方式将第二列宽度设置为自动来实现所需的功能,但我正在寻找其他一些解决方案(最好是 xaml 方式一)。
private void Button_Click(object sender, RoutedEventArgs e)
{
this.myGrid.ColumnDefinitions[1].Width = GridLength.Auto;
this.label1.Visibility = Visibility.Collapsed;
}
Run Code Online (Sandbox Code Playgroud)
tpo*_*pol 11
可以使用 来实现所需的行为UniformGrid。
确保将行数设置为 1。
<UniformGrid Rows="1">
<Label>One</Label>
<Label>Two</Label>
<Label>Three</Label>
</UniformGrid>
Run Code Online (Sandbox Code Playgroud)
其余元素均匀分布。
<UniformGrid Rows="1">
<Label>One</Label>
<Label Visibility="Collapsed">Two</Label>
<Label>Three</Label>
</UniformGrid>
Run Code Online (Sandbox Code Playgroud)
我按照 Rob 的建议添加了 Xaml Binding,如下所示:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="{Binding MiddleColumnWidth}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0">One</Label>
<Label Grid.Row="0" Grid.Column="1" Visibility="{Binding IsSecondLabelVisible}">Two</Label>
<Label Grid.Row="0" Grid.Column="2">Three</Label>
Run Code Online (Sandbox Code Playgroud)
xaml 背后的代码:
private bool ShowOnlyTwoColumns;
private GridLength MiddleColumnWidth
{
get
{
if (ShowOnlyTwoColumns)
return GridLength.Auto; // Auto collapses the grid column when label is collapsed
return new GridLength(1, GridUnitType.Star);
}
}
private Visibility IsSecondLabelVisible
{
get { return this.ShowOnlyTwoColumns ? Visibility.Collapsed : Visibility.Visible; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3539 次 |
| 最近记录: |