当WPF Expander展开或折叠时,我该如何更改其标题文本?

11
使用WPF扩展器,我希望在控件展开时标题从“查看更多”更改为“查看较少”,并在再次折叠时恢复为“查看更多”。 我想要的是一种WPF纯解决方案,而不是C#或其他后台代码的方法。我感觉这应该很容易,但是我在谷歌上找不到正确的术语来获得解决方案。谢谢!
2个回答

23

你可以在样式触发器中完成这个操作:

<Expander>
    <Expander.Style>
        <Style TargetType="Expander">
            <Setter Property="IsExpanded" Value="False" />
            <Setter Property="Header" Value="See More" />

            <Style.Triggers>
                <DataTrigger Binding="{Binding IsExpanded,RelativeSource={RelativeSource Self}}" Value="True">
                    <Setter Property="Header" Value="See Less" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Expander.Style>
</Expander>

那还没有经过测试,但这应该会给你一些线索。


1
考虑到它经过测试,而且完全按照我的预期工作。非常感谢。 :) - Scott Ferguson
2
请确保在样式中设置标题,而不是在展开器本身中设置,否则展开器中的值将优先于样式触发器。 - Darren
如果您想使用控件的IsExpanded属性,可以使用Trigger代替DataTrigger,如下所示:<Trigger Property="IsExpanded" ...> - g t

9

虽然有些老旧,但是这可以通过使用两个简单的触发器来完成,而不需要绑定:

<Expander>
    <Expander.Style>
        <Style TargetType="Expander" >
            <Style.Triggers>
                <Trigger Property="IsExpanded" Value="True">
                    <Setter Property="Header" Value="See Less" />
                </Trigger>
                <Trigger Property="IsExpanded" Value="False">
                    <Setter Property="Header" Value="See More" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Expander.Style>
</Expander>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接