我知道我可以在按钮上叠加图像,但是按钮是否可以采用图像的确切大小?换句话说,我想摆脱矩形按钮并使其适应图像的大小和形状。
问问题
2192 次
3 回答
7
您可以设置按钮的模板,如下所示:
<Button >
<Image Source="pan-left.png"/>
<Button.Template>
<ControlTemplate TargetType="Button">
<ContentPresenter Content="{TemplateBinding Content}"/>
</ControlTemplate>
</Button.Template>
</Button>
TemplateBinding
用于设置Content
属性以在 ControlTemplate 中设置内容,因为您可以将其移动ControlTemplate
到Resources
并可以将其用于多个按钮,您可以在按钮本身上设置内容
于 2013-09-20T05:43:02.337 回答
1
检查这个问题。
您可以重新模板按钮。
<Button x:Name="btn16x16">
<Button.Template>
<ControlTemplate>
<Border HorizontalAlignment="Center" VerticalAlignment="Center" >
<Image Source="pack://siteoforigin:,,,/Resources/SixteenBySixteen.png"
Width="16"
Height="16"/>
</Border>
</ControlTemplate>
</Button.Template>
</Button>
于 2013-09-20T05:43:54.403 回答
0
在上面的代码中,您正在硬编码图像路径。如果您想重用模板,请尝试此代码。有2种方式。
如果您在项目中嵌入图像,则在下面。
<Button Tag="Images\Grapes.png" Background="Black" Foreground="white" Focusable="False" Width="100" Height="30">
<Button.Template>
<ControlTemplate TargetType="Button">
<Image Source="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Tag}" />
</ControlTemplate>
</Button.Template>
</Button>
如果您在项目中添加图像作为内容,则使用绝对路径在下面的代码中。
<Button Tag="pack://siteoforigin:,,,/Apple.png">
<Button.Template>
<ControlTemplate>
<Border HorizontalAlignment="Center" VerticalAlignment="Center">
<Image Source="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Tag}" Stretch="None" />
</Border>
</ControlTemplate>
</Button.Template>
</Button>
于 2013-09-20T06:51:22.550 回答