4

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>

Window でこのボタンを使用します。

<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 キーワードを使用しましたが、間違いが見つかりません。

Horizo​​ntalAlignment、Horizo​​ntalContentAlignment、VerticalAlignment、および VerticalContentAlignment に Stretch を使用すると、グレーのサイズは適切ですが、テキスト コンテンツは left/up になります。センターテキストをお願いします。

誰にもアイデアがありますか?

どうもありがとう、

よろしくお願いします、

ニクセウス

4

1 に答える 1

10

これでうまくいくはずです。

<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>

1 つ質問があります。なぜ aButtonControlTemplatea があるのButtonですか? Border通常、視覚的な外観を再実装する必要があるため、ここでは etcのような単純なコントロールを期待します。

編集

の 1 つを次のContentPresenterように宣言する必要があります。

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

どちらかわかりません。ただし、両方を試すことができます。;o)

于 2013-04-11T14:33:41.173 に答える