我正在使用WPF创建桌面应用程序 我已经连续放置了三个元素:Button,Textbox和Label 当我调整屏幕大小时,Label和Textbox的边距是一致的,但Button不是。按钮会根据屏幕高度缩小并拉伸。
如您所见,当屏幕高度较大时,按钮较大,反之亦然。
以下是代码:
<Grid Grid.Row="0" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="Search: (Name or Contact)" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Right" Margin="0,0,25,0" VerticalAlignment="Center" FontSize="20" TextWrapping="Wrap"/>
<TextBox Grid.Column="1" HorizontalAlignment="Stretch" Height="auto" Margin="25,0,25,0" TextWrapping="Wrap" Text="" VerticalAlignment="Center" FontSize="20" Grid.Row="0" Name="TxtSearch" TextChanged="TxtSearch_TextChanged"/>
<Button x:Name="BtnSearch" Grid.Column="2" Grid.Row="0" FontSize="20" Click="BtnSearch_Click" Margin="32">
<Viewbox>
<TextBlock>
Search
</TextBlock>
</Viewbox>
</Button>
</Grid>
我希望按钮高度保持一致,边距是动态的。
答案 0 :(得分:2)
有几种方法可以解决这个问题。
例如,您可以将按钮的VerticalAlignment
设置为Center
,在正常情况下它可以正常工作。但是,您的内容为Viewbox
,内部为TextBlock
。那么,Viewbox
,你现在设置它的方式,将根据窗口大小重新调整大小。如果您选择VerticalAlignment
方法,我建议您只需将按钮的Content
设置为“搜索”文字:Content="Search"
。
如果您希望保留Viewbox
,可以将按钮的高度设置为静态值,这肯定会阻止它垂直重新调整大小。但是,在这种情况下,我并不是静态尺寸的忠实粉丝。
我不完全确定你为什么会有Viewbox
,但到目前为止这是最简单的两种方法。除非你有一个特定的理由让Viewbox
作为按钮的内容,否则我会删除它,因为它会给你带来不必要的问题。 Viewbox
有其用途,但我不认为这是其中之一。
答案 1 :(得分:0)
当您定义网格时,宽度/高度有3个可能性
因此,在您将Button放置在Grid.Row =“0”的情况下,将该行设为固定大小。如果您只在网格中定义一行,我建议您创建另一行“星”高度。然后将视图放在行中。