0

为什么这不起作用:

    <Button Width="200" Height="50">
    <Button.Style>
    <Style TargetType="Button">
        <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource Self}, Path=Height}"/>
        <Setter Property="Background" Value="Blue"/>
        <Style.Triggers>
                <Trigger Property="Button.IsPressed" Value="true">
                    <Setter Property="Background" Value="green"/>
                    <Setter Property="Height" Value="20"/>
                </Trigger>
        </Style.Triggers>
    </Style>
    </Button.Style>

<Button.Template>
    <ControlTemplate>
        <Canvas x:Name="MainCanvas" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
            <Border 
            Width="{TemplateBinding Width}"  Height="{TemplateBinding Height}"
                      x:Name="Border"  
                      CornerRadius="2" 
                      BorderThickness="1"
                      Background="{TemplateBinding Background}"
                      BorderBrush="black">
               <ContentPresenter 
                 Margin="2"
                 HorizontalAlignment="Center"
                 VerticalAlignment="Center"
                 RecognizesAccessKey="True"/>
             </Border>
        </Canvas>
    </ControlTemplate>
</Button.Template>
Hello
</Button>

像这样:

<Button Width="200" >
<Button.Style>
    <Style TargetType="Button">
        <Setter Property="Height" Value="50"/>
        <Setter Property="Background" Value="Blue"/>
        <Style.Triggers>
                <Trigger Property="Button.IsPressed" Value="true">
                    <Setter Property="Background" Value="green"/>
                    <Setter Property="Height" Value="20"/>
                </Trigger>
        </Style.Triggers>
    </Style>
</Button.Style>
<Button.Template>
    <ControlTemplate>
        <Canvas x:Name="MainCanvas" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
            <Border 
            Width="{TemplateBinding Width}"  Height="{TemplateBinding Height}"
                      x:Name="Border"  
                      CornerRadius="2" 
                      BorderThickness="1"
                      Background="{TemplateBinding Background}"
                      BorderBrush="black">
               <ContentPresenter 
                 Margin="2"
                 HorizontalAlignment="Center"
                 VerticalAlignment="Center"
                 RecognizesAccessKey="True"/>
             </Border>
        </Canvas>
    </ControlTemplate>
</Button.Template>
Hello
</Button>  

我希望按钮在按下时缩小。这是一个自定义控件的原型,因此样式稍后将被提升到一个 Generics.xmal 文件中。为什么它没有在 Button 上显示“Hello”字符串???

4

1 回答 1

2

在添加到 ControlTemplate 标记之前,字符串“Hello”不会显示在按钮上TargetType="Button",因为否则 ContentPresenter 不知道它在处理什么:

<ControlTemplate TargetType="Button">

至于您的样式绑定,您要做的是将属性绑定到自身 - 这没有任何意义。你想达到什么目的?

于 2010-02-01T13:43:25.977 回答