简单地说,我有一个Grid,有三个同样高的行和两个按钮。我想在第一行中有第一个按钮,然后第二行为空,最后在第三行中有第二个按钮。这样我就得到了相对大小的按钮之间的间距。我需要这个而不是硬编码绝对边际值。所以这是XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Grid.Row="0">Button 1</Button>
<Button Grid.Row="2">Button 2</Button>
</Grid>
效果很好!现在我需要的其他功能是让所有内容都可以扩展,所以我把它放在Viewbox中:
<Viewbox>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Grid.Row="0">Button 1</Button>
<Button Grid.Row="2">Button 2</Button>
</Grid>
</Viewbox>
突然布局被打破了。我得到了Viewbox提供的缩放,但我没有得到按钮之间的空白空间。所以有两个问题:
答案 0 :(得分:0)
试试这个......
<Viewbox>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition
MinHeight="{Binding Path=ActualHeight,
ElementName=MyButton1}"
Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Grid.Row="0" x:Name="MyButton1">Button 1</Button>
<Button Grid.Row="2">Button 2</Button>
</Grid>
</Viewbox>
严格假设按钮的高度相同。
为什么会发生这种情况,请检查此... http://connect.microsoft.com/VisualStudio/feedback/details/403562/wpf-grid-layout-is-broken-when-put-in-viewbox
答案 1 :(得分:0)
Viewbox无法与百分比一起使用。在我看来,我不建议使用Viewbox来“分组”所有元素。您应该仅使用Viewbox作为按钮文本:
<Window.Resources>
<Style x:Key="DefaultButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="LightGray">
<Viewbox>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Viewbox>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.3*" />
<RowDefinition Height="0.3*" />
<RowDefinition Height="0.3*" />
</Grid.RowDefinitions>
<Button Grid.Row="0" Style="{DynamicResource DefaultButton}">Button 1</Button>
<Button Grid.Row="2" Style="{DynamicResource DefaultButton}">Button 2</Button>
</Grid>
</Border>
</Grid>