新的按钮样式图片未显示。

3

我正在为按钮设计样式,以自定义的方式显示 在这里输入图片描述

思路是将图像源写入标签属性,将文本写入内容属性

因此,样式如下:

<Style x:Key="NormalButtonStyle" TargetType="Button">
    <Setter Property="Background" Value="Black"/>
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="Padding" Value="12,4,12,4"/>
    <Setter Property="HorizontalAlignment" Value="Left"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="FontWeight" Value="SemiBold"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid Background="{TemplateBinding Background}">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Image Source="{TemplateBinding Tag}" Height="{TemplateBinding Height}" Width="{TemplateBinding Height}"/>
                    <ContentPresenter x:Name="ContentPresenter" Grid.Column="1" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Foreground" Value="Red" />
                    </Trigger>

                    <Trigger Property="IsPressed" Value="true">

                        <Setter Property="Foreground" Value="Gray"/>

                    </Trigger>

                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

图片不显示,只有文字出现

我在MainWindow中这样调用按钮

<Button Style="{DynamicResource NormalButtonStyle}" Tag="/iPARK;component/Resources/Sign%20out_icon.png" HorizontalAlignment="Right" Margin="20" Click="Signout_Click"/>

如果我直接在样式文件中设置图像,就像这样,它会显示出来,但是它不能被重复使用于其他图像。
<Image Source="/iPARK;component/Resources/Sign%20out_icon.png" Height="{TemplateBinding Height}" Width="{TemplateBinding Height}"/>
1个回答

1
当您将图像URI放入Tag属性中时,它不会自动转换为ImageSource(就像对于Image.Source属性所做的那样)。 您需要明确执行此操作:
<Button ...>
    <Button.Tag>
        <BitmapImage UriSource="/iPARK;component/Resources/Sign%20out_icon.png"/>
    </Button.Tag>
</Button>

我已经按照您所说的将标签更改为指定格式,并将样式中的<image/>更改为<ContentPresentor/>,这样就解决了问题。谢谢。 - Captain overflow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接