我在我的应用程序GUI上显示了几个按钮,在我的WPF项目中使用以下XAML:
<Button Style="{DynamicResource NoChromeButton}" Click="backBtn_Click" Margin="0,0,0,0" HorizontalAlignment="Left" >
<Image Source="C:\...\arrow_left.png" Height="30" Width="30" />
</Button>
<Button Style="{DynamicResource NoChromeButton}" Click="RefreshBtn_Click" Margin="0,0,0,0" HorizontalAlignment="Left" >
<Image Source="C:\...\arrow_loop3.png" Height="30" Width="30" />
</Button>
然而,当我运行我的应用程序时,按钮看起来比我正在显示的图像的大小 - 即图像是30x30,但按钮是矩形的,而不是正方形,其高度为大于它们的宽度。
我正在绘制彼此相邻的按钮,与其他一些按钮连在一起,以便在应用程序窗口的顶部显示“菜单栏”。但是,由于这些按钮的高度显示的值大于我设置的值,因此在菜单栏上显示“白色空间”,在其他按钮上方和下方显示高度值,我已经设定了,例如:
<Button Style="{DynamicResource NoChromeButton}" Click="referThis" Margin="0,0,0,0" HorizontalAlignment="Left" HorizontalContentAlignment="Left" Height="30" Width="80">
<TextBlock>Send Reference</TextBlock>
</Button>
使用此按钮,似乎是因为我正在显示文本,而不是图像,所以它一直保持在高度和高度。我设置的宽度值,但这意味着它上面和下面有一些“空白区域”,因为其他按钮导致<StackPanel>
放置这些按钮以占据比我更多的垂直空间本打算。
如何强制显示图像的按钮以我设置的尺寸显示?
修改
这似乎与我在运行应用程序时手动调整窗口大小时发生的情况有关 - 当调整窗口大小时<StackPanel>
/ <TabPanel>
会自动调整大小...我已将Height
的{{1}}设置为特定值,现在这意味着按钮都限制为该大小,因此它们都保持相同的大小,这很棒。
但是,当我调整窗口大小时,这会导致它们所在的<StackPanel>
被调整大小,所以我最终会在按钮上方和下方留下空白区域 - 有没有办法可以阻止它?
答案 0 :(得分:0)
将按钮的VerticalAlignment设置为顶部。 在按钮上设置所需的宽度/高度,而不是图像。 通过Margin属性执行此操作。另请查看Alignment on MSDN。 然后将图像的拉伸设置为Stretch.Fill。
或者,你风格的东西可能会让你失望,因为这个
<Button VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0">
<Image Width="30" Height="30" />
</Button>
完美地为我工作。
答案 1 :(得分:0)
此代码正是您想要的:
<Button Width="100" Height="100" Padding="0" BorderThickness="0">
<Image Source="image.jpg" Stretch="Fill"/>
</Button>
注意Padding和BorderThickness值使图像适合按钮。 正如RoyalPotato所说,您可以更改按钮宽度和高度,图像大小将动态拉伸。