gpt4 book ai didi

c# - 拉伸(stretch)不适用于 WPF 模板化按钮

转载 作者:太空狗 更新时间:2023-10-30 00:19:54 24 4
gpt4 key购买 nike

我在 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,则灰色具有良好的尺寸,但是,文本内容在左/上!我想要一个中心文本。

有人有想法吗?

非常感谢,

最好的问候,

尼克修斯

最佳答案

这应该可以解决问题。

<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 中有一个 Button 用于 Button?通常,我希望这里有简单的控件,例如 Border 等,因为您想要重新实现视觉外观。

编辑

ContentPresenter 之一应该这样声明。

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

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

关于c# - 拉伸(stretch)不适用于 WPF 模板化按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15951180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com