wpf - EventTrigger 无法在 IsEnabledChanged 上触发

标签 wpf xaml blend

我有一个继承自 UserControl 的自定义控件,我通过绑定(bind)启用/禁用该控件,并尝试使用 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>

交互 使用http://schemas.microsoft.com/xaml/behaviors命名空间。

问题是,尽管控件明显启用/禁用,但 ChangePropertyAction 并未执行。我已经测试了在控件上为 IsEnabledChanged 添加代码隐藏事件处理程序,并且按预期调用它。我还测试了 Loaded 事件的触发,以验证操作是否正确以及控件是否按预期更改。

要让 EventTriggerIsEnabledChanged 上触发,我缺少什么?

最佳答案

What am I missing to get the EventTrigger to trigger on IsEnabledChanged?

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

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

关于wpf - EventTrigger 无法在 IsEnabledChanged 上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55827019/

相关文章:

c# - 如何关闭外部网络浏览器中的选项卡?

c# - 在 wpf 中重置绑定(bind)的源

c# - 如何在WPF中正确使用转换器?

c# - 带 WinUI 3 的托盘图标

visual-studio - 单击按钮导航到另一个页面

wpf - 如何绑定(bind)到 XAML、WPF 中的附加属性

c# - 将 View 模型创建为 DataContext 与创建为 StaticResource 的值(value)是什么

c# - 如何在动态数据显示图中的特定点添加标记?

xaml - Blend For Visual Studio 2019 中缺少“资源”选项卡

c# - 全局资源未将样式应用于 xaml 中的控件