我有一个按钮的样式,比如 ButtonStyle,里面有 VisualStates、属性和触发器。我有另一种基于 ButtonStyle 的样式。我需要访问 BasedOn 样式内名为“OnhoverGrid”的元素,以更改其属性。 ButtonStyle 中的 ControlTemplate 包含许多元素及其设置器。我无法使用从现有 ControlTemplate 复制的代码为 BasedOn 样式设置新模板。有没有办法可以从 BasedOn 样式触发器内部访问元素 OnhoverGrid?这是样式的示例片段。
<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="RootGrid" SnapsToDevicePixels="True">
<Grid x:Name="OnhoverGrid" Opacity="0" Background="Blue">
<TextBlock Text="{TemplateBinding Content}"></TextBlock>
</Grid>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="OnhoverGrid" Property="Opacity" Value="1" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style BasedOn="{StaticResource ButtonStyle}" TargetType="{x:Type Button}">
<Setter Property="Foreground" Value="Black"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="OnhoverGrid" Property="Background" Value="Red" /><!-- Unable to access on OnhoverGrid-->
</Trigger>
</Style.Triggers>
</Style>
我也遇到这个问题了,请问你解决了吗?