gpt4 book ai didi

wpf - 基于另一个 ControlTemplate 的 ControlTemplate

转载 作者:行者123 更新时间:2023-12-04 20:53:41 24 4
gpt4 key购买 nike

我知道必须有一个简单的答案,但我找不到。

我有一个名为 HoverButton 的按钮样式.

<Style x:Key="HoverButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border>
<ContentPresenter/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="Background" Value="WhiteSmoke"/>
<Setter Property="Foreground" Value="DarkRed"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Background" Value="Transparent"/>
</Style>

然后我想创建另一个基于 HoverButton 的“派生”样式。有具体内容。我在这里降低了上述样式的复杂性,但它足够复杂,我不想复制和粘贴它。
<Style x:Key="CloseButton" BasedOn="{StaticResource HoverButton}" TargetType="{x:Type Button}">
<Setter Property="Content">
<Setter.Value>
<Path Width="8" Height="8" Stroke="{Binding Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType=Button}}" Data="M0,0 L8,8 M8,0 L0,8" StrokeThickness="2" />
</Setter.Value>
</Setter>
</Style>

这不起作用 - “指定的元素已经是另一个元素的逻辑子元素。先断开它。”看来我需要重新定义 Template派生样式的属性,但以某种方式引用了基本样式的模板。

有任何想法吗?

最佳答案

您不能将模板建立在另一个之上,但可以轻松解决此错误。只需创建一个等效的 ContentTemplate而不是设置 Content .那样一个Path为每个按钮创建,而不是为所有按钮创建一个(这是不允许的)。

关于wpf - 基于另一个 ControlTemplate 的 ControlTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7284623/

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