WPF:按钮模板中图像下的文本

Posted

技术标签:

【中文标题】WPF:按钮模板中图像下的文本【英文标题】:WPF: Text under image in button template 【发布时间】:2017-11-16 05:43:38 【问题描述】:

我正在尝试使用堆栈面板将文本放在按钮模板内的图像下,但它不起作用。只有图像可见,文本不可见。使用模板,我可以将图像作为背景填充所有按钮。见下文:

            <Button Name="btnAdd" Height="36" Width="36" Click="btnAdd_Click" HorizontalAlignment="Center" Margin="10">
                <Button.Template>
                    <ControlTemplate>     
                        <StackPanel Orientation="Vertical">
                           <Image Source="/MyPath/Add.png"/>                               
                           <Label Padding="0">My Button Text</Label>
                        </StackPanel>
                    </ControlTemplate>
                </Button.Template>                    
            </Button>

如何使我的标签在图像下方居中显示并以小字体显示?

【问题讨论】:

【参考方案1】:

你有两个问题。您将 ButtonHeightWidth 设置为 36,但文本“我的按钮文本”比 36 宽。如果 Add.png 高于 36 像素,您将没有任何空间用于显示文本。

这就是为什么我建议设置 Image WidthHeight 而不是 Button WidthHeight

为了在图像下方的中心显示文本,您必须将LabelHorizontalAlignment 属性设置为“Center”。

结果可能是这样的

<Button>
    <Button.Template>
        <ControlTemplate>
            <StackPanel Orientation="Vertical">
                <Image Source="/MyPath/Add.png" 
                       Height="36" 
                       Width="36"/>
                <Label HorizontalAlignment="Center"
                       Content="My Button Text" />
            </StackPanel>
        </ControlTemplate>
    </Button.Template>
</Button>

更短的形式

<Button>
    <StackPanel Orientation="Vertical">
        <Image Source="/MyPath/Add.png" 
               Height="36" 
               Width="36"/>
        <Label HorizontalAlignment="Center"
               Content="My Button Text" />
    </StackPanel>
</Button>

【讨论】:

以上是关于WPF:按钮模板中图像下的文本的主要内容,如果未能解决你的问题,请参考以下文章

使用图像和文本创建 wpf 按钮

PowerShell\WPF:使用数据模板的 PowerShell 中的空单选按钮对象

Silverlight:带有文本修剪功能的按钮模板

wpf里如何动态改变一个按钮模板里边的静态资源

拉伸不适用于 WPF 模板化按钮

WPF - 如何使用模板创建图像按钮