【发布时间】:2010-04-09 00:01:00
【问题描述】:
使用 WPF 扩展器,我希望 Header 在控件展开时从 See More 更改为 See Less,然后返回 See More em> 当它再次折叠时。 我更喜欢 WPF 纯解决方案,而不是 C# 或其他代码隐藏方法。 我觉得这应该很容易,但我正在努力寻找合适的条款来通过谷歌获得解决方案。
谢谢!
【问题讨论】:
使用 WPF 扩展器,我希望 Header 在控件展开时从 See More 更改为 See Less,然后返回 See More em> 当它再次折叠时。 我更喜欢 WPF 纯解决方案,而不是 C# 或其他代码隐藏方法。 我觉得这应该很容易,但我正在努力寻找合适的条款来通过谷歌获得解决方案。
谢谢!
【问题讨论】:
旧的(我知道),但这可以通过使用两个简单的Trigger 来完成,无需绑定:
<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>
【讨论】:
您可以在样式触发器中执行此操作:
<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>
这是未经测试的,但它应该能让你继续前进。
【讨论】:
IsExpanded属性,你可以使用Trigger而不是DataTrigger,像这样:<Trigger Property="IsExpanded" ...>