0

我是 WPF 新手,我创建了以下简单样式示例。但是它不能正常工作并且按钮的内容没有显示,尽管我仍然可以点击它。谁能告诉我为什么它坏了?

<Window.Resources>
    <Style TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border BorderBrush="Blue" 
                            BorderThickness="5" 
                            Background="Aqua"
                            Width="80"
                            Height="40">
                        <ContentPresenter></ContentPresenter>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style TargetType="Grid" x:Name="GridWithMarginStyle">
        <Setter Property="Margin" Value="12"></Setter>
    </Style>

</Window.Resources>
<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
            <EventSetter Event="Button.Click" Handler="ButtonHandler" />
            <Setter Property="Background" Value="Red"></Setter>
            <Setter Property="Foreground" Value="White"></Setter>
        </Style>
    </StackPanel.Resources>
    <Button Name="OkBtn">OK</Button>
    <Button Name="CancelBtn" Click="CancelBtn_Click">Cancel</Button>
</StackPanel>
4

1 回答 1

1

您正在以BasedOn正确的方式使用该属性。问题是您ContentPresenter没有绑定到它呈现的控件(即按钮)。

试着ControlTemplate用这个替换你的 XAML:

<ControlTemplate TargetType="{x:Type Button}">
    <Border BorderBrush="Blue" 
        BorderThickness="5" 
        Background="Aqua"
        Width="80"
        Height="40">
        <ContentPresenter Content="{TemplateBinding Content}" />
    </Border>
</ControlTemplate>

通过使用TemplateBinding,您可以将 绑定ContentPresenterContent模板化控件的属性。

于 2015-08-08T21:17:06.640 回答