自定义按钮无法正确显示其内容

时间:2015-01-14 02:13:09

标签: c# wpf windows xaml

好的,我在我的WPF项目中的.xaml文件中创建了一个自定义按钮,我已经做了所有事情,但内容没有显示...... C#代码是默认的,没有任何改变,但这里是我的.xaml代码:

<Button Name="TestButton" Content="TESTING" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="197,158,0,0" Height="30" Width="120">
            <Button.Template>
                <ControlTemplate>
                    <Image Height="30" Width="120" Stretch="Fill">
                        <Image.Style>
                            <Style TargetType="{x:Type Image}">
                                <Setter Property="Source" Value="/Resources/btn_primary_normal.png"/>
                                <Style.Triggers>
                                    <Trigger Property="IsMouseOver" Value="True">
                                        <Setter Property="Source" Value="/Resources/btn_primary_hover.png"/>
                                    </Trigger>
                                    <Trigger Property="IsEnabled" Value="False">
                                        <Setter Property="Source" Value="/Resources/btn_primary_disabled.png"/>
                                    </Trigger>
                                </Style.Triggers>
                            </Style>
                        </Image.Style>
                    </Image>
                </ControlTemplate>
            </Button.Template>
        </Button>

1 个答案:

答案 0 :(得分:1)

当您替换控件的ControlTemplate时,您将替换其所有可视功能,包括显示Content属性的部分。如果您想要一个显示图像的按钮以及Content属性中的任何内容,那么只需将ContentPresenter添加到您的模板中,如下所示:

<Button Name="TestButton" Content="TESTING" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="197,158,0,0" Height="30" Width="120">
        <Button.Template>
            <ControlTemplate TargetType="Button">
                <Grid>
                <Image Height="30" Width="120" Stretch="Fill">
                    <Image.Style>
                        <Style TargetType="{x:Type Image}">
                            <Setter Property="Source" Value="/Resources/btn_primary_normal.png"/>
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Source" Value="/Resources/btn_primary_hover.png"/>
                                </Trigger>
                                <Trigger Property="IsEnabled" Value="False">
                                    <Setter Property="Source" Value="/Resources/btn_primary_disabled.png"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Image.Style>
                </Image>
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Grid>
            </ControlTemplate>
        </Button.Template>
    </Button>

另请注意ControlTemplate中TargetType的规范,这很重要。