我在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"/>
我的问题是该按钮似乎没有高度=“27”和宽度=“88”。
以下是我在VS2012的结果:
按钮尺寸合适,但灰色区域没有。我在模板上使用了Stretch关键字,但我没有发现错误。
如果我使用Stretch进行HorizontalAlignment,HorizontalContentAlignment,VerticalAlignment和VerticalContentAlignment,则灰色具有良好的大小,但是,文本内容在左/上!我想要一个中心文字。
有人有想法吗?
非常感谢,
致以最诚挚的问候,
Nixeus
答案 0 :(得分: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>
有一个问题,为什么Button
ControlTemplate
中Button
为Border
?通常,我希望这里有简单的控件,如ContentPresenter
等,因为你想重新实现视觉外观。
修改强>
其中一个<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
应该像这样声明。
{{1}}
我不确定是哪一个。但你可以尝试两者。 ; O)