2013-04-11 43 views
3

我创建了WPF中的模板化的按钮:绷网不是在一个WPF模板按钮将

<ControlTemplate TargetType="{x:Type Button}" 
       x:Key="BoutonGris"> 
    <Button Foreground="White" 
      BorderBrush="Transparent" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      HorizontalContentAlignment="Stretch" 
      VerticalContentAlignment="Stretch"> 
    <Button.Content> 
     <Border CornerRadius="3" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch"> 
     <ContentPresenter /> 
     <Border.Style> 
      <Style TargetType="{x:Type Border}"> 
      <Setter Property="Background" 
        Value="#58585a" /> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" 
         Value="True"> 
       <Setter Property="Background" 
         Value="{DynamicResource DegradeCouleurTheme}" /> 
       </Trigger> 
      </Style.Triggers> 
      </Style> 
     </Border.Style> 
     </Border> 
    </Button.Content> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <ContentPresenter /> 
      </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     </Style> 
    </Button.Style> 
    </Button> 
</ControlTemplate> 

我在窗口中使用此按钮:

<Button x:Name="BtnRestoreDefault" Template="{DynamicResource BoutonGris}" Content="Rest. défaut" Height="27" Width="88" Click="Button_Click_RestoreDefault"/> 

我的问题是,按钮看起来没有Height =“27”和Width =“88”。

这里是我的结果VS2012:

按钮具有良好的尺寸,但在灰色地带没有。我在模板上使用了Stretch关键字,但是我没有发现错误。

如果我使用Stretch进行Horizo​​ntalAlignment,Horizo​​ntalContentAlignment,VerticalAlignment和VerticalContentAlignment,灰色的尺寸很好,但文本内容处于左/上!我想要一个中心文本。

有人有想法吗?

非常感谢,

最好的问候,

Nixeus

+0

想要的外观是什么?背景是否应该完全填充? – DHN 2013-04-11 14:21:03

+0

是的,我想:按钮大小=背景大小(灰色区域大小) – 2013-04-11 14:22:15

回答

9

这应该做的伎俩。

<ControlTemplate TargetType="{x:Type Button}" x:Key="BoutonGris"> 
    <Button Foreground="White" BorderBrush="Transparent" 
      HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
      HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" > 
     <Button.Content> 
      <!-- A lot of your code --> 
     </Button.Content> 
     <!-- A lot of your code --> 
    </Button> 
</ControlTemplate> 

一个问题,为什么你还要在你的ControlTemplate一个ButtonButton?通常情况下,我希望在这里使用简单的控件,如Border等,因为您想重新实现视觉效果。

编辑

其中ContentPresenter应声明如下。

<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 

我不确定哪一个。但你可以尝试两种。 ; o)

+0

如果我使用Stretch进行Horizo​​ntalAlignment,Horizo​​ntalContentAlignment,VerticalAlignment和VerticalContentAlignment,则灰色具有良好的大小,但文本内容处于左/上!我想要一个中心文本。 :( – 2013-04-11 14:38:27

+0

请参考我的编辑 – DHN 2013-04-11 14:45:15

+0

非常感谢!完美!:) – 2013-04-11 14:47:04