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 事件的触发,以验证操作是否正确以及控件是否按预期更改。

EventTriggerIsEnabledChanged 上触发我缺少什么?

【问题讨论】:

【参考方案1】:

EventTriggerIsEnabledChanged 上触发我缺少什么?

EventTrigger 仅处理路由事件,IsEnabledChanged 不是路由事件。

您可以在视图代码隐藏的事件处理程序中设置MaxHeight 属性,或者按照here 的建议实现附加行为。

【讨论】:

以上是关于EventTrigger 无法在 IsEnabledChanged 上触发的主要内容,如果未能解决你的问题,请参考以下文章

EventTrigger 事件触发器

unity5eventtrigger怎么用

WPF EventTrigger并不总是触发

WPF 通过EventTrigger修改鼠标样式

WPF中checkBox关联一个Combox,设置Combox的IsEnable=False,过程中再True

WPF 使用EventTrigger设置Item的IsSelected选项