使用其名称从Style BasedOn访问样式ControlTemplate中的元素

时间:2016-12-13 11:33:13

标签: wpf xaml controltemplate

我有一个Style,用于Button的ButtonStyle,里面有VisualStates,Properties和Triggers。我有另一种风格的BasedOn ButtonStyle。我需要访问名为" OnhoverGrid"的元素。在BasedOn样式中,改变其属性。 ButtonStyle中的ControlTemplate包含许多元素和setter。我无法使用从现有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>

0 个答案:

没有答案