实现控制模板后,按钮的内容不会显示

时间:2013-01-19 16:30:24

标签: wpf

由于我是Button的资源样式控件模板,另外我已经在按钮本身中定义了一个控件模板。但是Button的内容没有显示。我该如何解决这个问题?

<Grid>
        <Grid.Resources>
        <Style TargetType="Button">
            <!--Set to true to not get any properties from the themes.-->
            <Setter Property="OverridesDefaultStyle" Value="true"/>
                <Setter Property="Background" Value="Yellow"/>
                <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid>
                                <Border TextBlock.Foreground="{TemplateBinding Foreground}"
                x:Name="Border"
                CornerRadius="10"
                BorderThickness="1"/>
                                    <ContentPresenter HorizontalAlignment="Center"
                            VerticalAlignment="Center"/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        </Grid.Resources>
        <Button Name="test" Width="50" Height="60" Content="myvalue">
            <Button.Template>
                <ControlTemplate>
                    <Grid>
                        <Ellipse Fill="{TemplateBinding Background}"/>
                        <ContentPresenter HorizontalAlignment="Center"
                            VerticalAlignment="Center"/>                       
                    </Grid>
                </ControlTemplate>
            </Button.Template>
        </Button>
    </Grid>

1 个答案:

答案 0 :(得分:1)

您应该将TargetType中的ControlTemplate设置为Button

<ControlTemplate TargetType="Button">
    <Grid>
        <Ellipse Fill="{TemplateBinding Background}"/>
        <ContentPresenter HorizontalAlignment="Center"
                             VerticalAlignment="Center"/>                       
    </Grid>
</ControlTemplate>

说明(来源msdn):

  

如果您在资源部分中有一个独立的ControlTemplate   TargetType属性设置为类型,ControlTemplate不设置   自动应用于该类型。相反,您需要指定   x:键并明确应用模板。

     

另请注意,a上需要TargetType属性   ControlTemplate,如果模板定义包含   ContentPresenter。