2013-04-11 42 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