2

我正在开发一个 Windows 应用商店应用程序,几个月前我已经这样做了,但突然之间,在这个新应用程序中,我无法(正确地)在按钮内显示图像。

    <Button x:Name="ShowView" Grid.Column="1" Width="32" Height="32" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,61,20,33">
        <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <Image x:Name="ShowViewImage" Source="/Assets/ShowView.png" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
        </StackPanel>
    </Button>

正如您所看到的,代码很好(除非事情发生了巨大变化,但看起来并没有)。那么给了什么?这是迄今为止我在 XAML 文件中唯一的代码,除了 VS 生成的默认代码,因为它是一个新项目。

PS 我也试过取出 StackPanel 并只使用 Button > Image,但这会产生相同的结果。

因此,当 BUtton 在运行时显示时,我只能看到一个非常小的 2 像素图像(但图像实际上是32x32pixels。如何正确显示“图像按钮”?

4

2 回答 2

2

您有几个选项,Padding例如属性是模板绑定,并添加了一些预设填充。因此,如果您Button有一个固定HeightWidth设置为 32,那么简单的设置Padding="0"可以根据您的Image.

如果情况变得更糟,您总是可以制作自己的Button模板。有几种简单的方法可以做到这一点。其中之一就是复制默认Button模板,撕掉其中的所有填充/边距/高度/宽度垃圾预设,然后更改其名称,然后将新模板直接应用于您的按钮,例如;

<Button x:Name="ShowView" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,61,20,33" 
        Style="{StaticResource YourCustomButtonTemplateForImages}">
    <Image x:Name="ShowViewImage" Source="/Assets/ShowView.png"/>
</Button>

或者...另一种选择是,将您的Image内部嵌入ViewBox到您的按钮内部,它将适合并根据其设置的可用大小重新调整自身。

哦,你可能还想让Background="Transparent"你在它的时候让它看起来更干净一点,就像一个图像一样。

希望这可以帮助。

于 2013-07-24T15:44:02.887 回答
2

问题是您的WidthHeightfor 按钮太小了。您已将其设置为 32x32 像素,但按钮将使用几乎所有这些内容作为它在可见边框周围留下的空间、边框本身以及边框和按钮内容之间的填充。

(它在边缘周围留出空间,以提供比可见外观更大的命中目标。这在难以准确放置手指的触摸屏上很有用。)

您的图像只剩下几个像素。

您需要将按钮设置为大约 62x52 像素,以便在中间为 32x32 像素的位图留出足够的空间。

Margin如果您明确设置更小和属性,您可以使用稍微更小的按钮Padding,尽管如上所述,边距是有原因的。

于 2013-07-24T15:36:24.670 回答