Tim*_*ers 5 wpf xaml styles controltemplate
我知道必须有一个简单的答案,但我找不到它.
我有一个叫做按钮的样式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>
Run Code Online (Sandbox Code Playgroud)
然后,我想创建另一个基于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>
Run Code Online (Sandbox Code Playgroud)
这不起作用 - "指定的元素已经是另一个元素的逻辑子元素.首先断开它." 看起来我需要重新定义Template派生样式的属性,但不知何故引用了基本样式的模板.
有任何想法吗?
您不能将模板建立在另一个基础上,但这一错误很容易解决。只需创建一个等效项ContentTemplate而不是设置Content. 这样,Path就会为每个按钮创建一个按钮,而不是为所有按钮创建一个按钮(这是不允许的)。
| 归档时间: |
|
| 查看次数: |
7699 次 |
| 最近记录: |