首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >触发器中的WPF ControlTemplate样式GradientStop

触发器中的WPF ControlTemplate样式GradientStop
EN

Stack Overflow用户
提问于 2009-06-05 05:20:18
回答 1查看 3.9K关注 0票数 1

这是我的TabItem的XAML。我希望能够在触发器中设置单个渐变色标的颜色。我知道我可以在触发器的setter中完全重新定义渐变,但我想在后台访问一个特定的属性,这样我就可以在将来对其进行动画处理。

我已经尝试了触发器的setter中的所有变体,并搜索了很长一段时间-但我仍然无法编译它。我也尝试过class.property语法,但仍然一无所获。此代码引发的当前错误为:

“找不到类型'Background.GradientStops‘。”

我非常确定我知道这里发生了什么--也许我想要的是不可能的。但必须有一种方法来在控件模板中为控件的渐变设置动画。

有谁可以帮我?谢谢

代码语言:javascript
复制
<Style TargetType="{x:Type TabItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TabItem}">
                <TextBlock Padding="6 2 6 2" Name="TheHeader">
                    <TextBlock.Background>
                        <LinearGradientBrush StartPoint="0, 0" EndPoint="0, 1">
                            <GradientStop Offset="0" Color="#f4fafd" />
                            <GradientStop Offset="1" Color="#ceedfa" />
                        </LinearGradientBrush>
                    </TextBlock.Background>
                    <ContentPresenter ContentSource="Header" Margin="0" />
                </TextBlock>
                <ControlTemplate.Triggers >
                    <Trigger Property="IsSelected" Value="True">
                        <Setter TargetName="TheHeader" Property="Background.GradientStops[0].Color" Value="White" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-05 06:28:34

您可以为其设置动画,如示例here中所示。

你也可以使用一些小技巧来设置它,尽管我总是喜欢创建多个笔刷作为资源,并交换它们或在中重新创建笔刷,就像你提到的那样。

代码语言:javascript
复制
<Style TargetType="{x:Type TabItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TabItem}">
                    <TextBlock Padding="6 2 6 2"
                               Name="TheHeader" Tag="#f4fafd">
                                    <TextBlock.Background>
                                            <LinearGradientBrush StartPoint="0, 0"
                                                                 EndPoint="0, 1">
                                                    <GradientStop Offset="0" 
                                                                  Color="{Binding ElementName=TheHeader, Path=Tag}"/>
                                                    <GradientStop Offset="1"
                                                                  Color="#ceedfa" />
                                            </LinearGradientBrush>
                                    </TextBlock.Background>
                                    <ContentPresenter ContentSource="Header"
                                                      Margin="0" />
                    </TextBlock>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected"
                                 Value="True">
                            <Setter TargetName="TheHeader"
                                    Property="Tag"
                                    Value="Red" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/954370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档