EventTrigger 无法在 IsEnabledChanged 上触发
Posted
技术标签:
【中文标题】EventTrigger 无法在 IsEnabledChanged 上触发【英文标题】:EventTrigger fails to trigger on IsEnabledChanged 【发布时间】:2019-04-24 09:41:31 【问题描述】:我有一个从 UserControl
继承的自定义控件,我正在通过绑定启用/禁用它,并尝试将 EventTrigger
用于 IsEnabledChanged
以导致执行 ChangePropertyAction
行为。
<local:StockmarketFilecard x:Name="StockmarketReport2" VerticalAlignment="Bottom" Panel.ZIndex="0" IsEnabled="Binding DataContext.BankReportEnabled, RelativeSource=RelativeSource Mode=FindAncestor, AncestorType=Window">
<Interactions:Interaction.Triggers>
<Interactions:EventTrigger EventName="IsEnabledChanged">
<Interactions:ChangePropertyAction PropertyName="MaxHeight" Value="100"/>
</Interactions:EventTrigger>
</Interactions:Interaction.Triggers>
</local:StockmarketFilecard>
Interactions
使用 http://schemas.microsoft.com/xaml/behaviors 命名空间。
问题是ChangePropertyAction
未执行,尽管控件明显启用/禁用。我已经测试在控件上为IsEnabledChanged
添加一个代码隐藏事件处理程序,它按预期调用。我还测试了Loaded
事件的触发,以验证操作是否正确以及控件是否按预期更改。
让EventTrigger
在IsEnabledChanged
上触发我缺少什么?
【问题讨论】:
【参考方案1】:让
EventTrigger
在IsEnabledChanged
上触发我缺少什么?
EventTrigger
仅处理路由事件,IsEnabledChanged
不是路由事件。
您可以在视图代码隐藏的事件处理程序中设置MaxHeight
属性,或者按照here 的建议实现附加行为。
【讨论】:
以上是关于EventTrigger 无法在 IsEnabledChanged 上触发的主要内容,如果未能解决你的问题,请参考以下文章