Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

EventTrigger с двумя условиями

#wpf #события #триггер


Доброго времени суток! Помогите пожалуйста дописать триггер. Данный триггер меняет
Opacity  компонента (StackPanel) с 0 до 70% (т.е. делает компонент видимым) при нажатии
на него левой кнопки мыши. 

Мне нужно доработать триггер так, чтобы при следующем нажатии левой кнопки мыши -
Opacity опять "уходила" в 0 (компонент становился невидимым). То есть триггер должен
отлавливать 2 условия:


событие MouseLeftButtonDown
Property="Opacity" Value="0.7"


Можно ли делать EventTrigger с двумя условиями?

Как в DataTrigger "забиндить" событие MouseLeftButtonDown?

   

    


Ответы

Ответ 1



Можно обойтись без code-behind, почти. Вам нужно сделать attached property, значение которого будет выставляться через EventTrigger, в вашем случае при нажатии левой кнопки мыши. А рядом положить MultiTrigger, который будет срабатывать при условии наличия значения в упомянутом выше свойстве. UPD: код. Модель: public class Model : INotifyPropertyChanged { private bool _isPropertySet; public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public Model() { SetPropertyCommand = new DelegateCommand(o => { IsPropertySet = !IsPropertySet; }); } public bool IsPropertySet { get { return _isPropertySet; } set { _isPropertySet = value; OnPropertyChanged(nameof(IsPropertySet)); } } public ICommand SetPropertyCommand { get; set; } View: Вам нужен один триггер на событие для установки свойства, и один триггер, который биндится на это свойство и выставляет нужное значение Opacity.

Комментариев нет:

Отправить комментарий