2

由于我有一个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>
4

1 回答 1

1

您应该设置TargetType为.ControlTemplateButton

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

说明(来源msdn):

如果资源部分中有一个独立的 ControlTemplate,且 TargetType 属性设置为某个类型,则 ControlTemplate 不会自动应用于该类型。相反,您需要指定一个 x:Key 并显式应用模板。

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

于 2013-01-19T16:39:41.023 回答