Я пытаюсь обновить некоторые визуальные свойства и обработчик щелчка на кнопке в ответ на значение перечисления.Визуальные свойства достаточно просты, но обработчик щелчков доставляет мне проблемы.
Перечисление имеет 4 значения: Запуск, Запуск, Завершение, Завершено.Кнопка запускает или убивает процесс в зависимости от текущего состояния.Вот что у меня есть для визуальных свойств:
<Button>
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ProcessState}" Value="{x:Static local:ProcessState.Launching}">
<Setter Property="IsEnabled" Value="false"/>
<Setter Property="Content" Value="Launching..."/>
</DataTrigger>
<DataTrigger Binding="{Binding ProcessState}" Value="{x:Static local:ProcessState.Launched}">
<Setter Property="IsEnabled" Value="true"/>
<Setter Property="Content" Value="Terminate"/>
</DataTrigger>
<DataTrigger Binding="{Binding ProcessState}" Value="{x:Static local:ProcessState.Terminating}">
<Setter Property="IsEnabled" Value="false"/>
<Setter Property="Content" Value="Terminating..."/>
</DataTrigger>
<DataTrigger Binding="{Binding ProcessState}" Value="{x:Static local:ProcessState.Terminated}">
<Setter Property="IsEnabled" Value="true"/>
<Setter Property="Content" Value="Launch"/>
<!-- Doesn't work!
<EventSetter Event="Click" Handler="LaunchSim_Click"/>
-->
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Проблема в том, что Style.Triggers
не поддерживает EventSetter
, поэтому я не могу обновить Button.Click
с помощью этого подхода.Теперь я мог бы использовать обработчик одного клика и ветвь на основе перечисления, но я хочу понять, что возможно со стороны XAML.
Я также пытался создать 4 отдельных стиля в Button.Resources
, затем меняем стили с помощью DataTrigger
, но в итоге вы пытаетесь изменить стиль кнопки, используя стиль, и я не уверен, что это тоже работает.
Есть ли разумный способ изменить Button.Click
из XAML в ответ на изменение значения данных?