EventTrigger не может сработать на IsEnabledChanged - PullRequest
1 голос
/ 24 апреля 2019

У меня есть пользовательский элемент управления, унаследованный от 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 Ответ

1 голос
/ 24 апреля 2019

Чего мне не хватает, чтобы заставить EventTrigger срабатывать на IsEnabledChanged?

Тот факт, что EventTrigger обрабатывает только перенаправленные события, а IsEnabledChanged не является перенаправленным событием.

Вы можете либо установить свойство MaxHeight в обработчике событий в выделенном фрагменте кода представления, либо реализовать присоединенное поведение, как предлагается здесь .

...