Question

WPF prend-il en charge l’utilisation de déclencheurs répondant aux événements routés, mais uniquement si une condition est remplie?

Par exemple, WPF prend en charge le déclenchement d’événements routés via les déclencheurs d’événements. c'est-à-dire:

<Button>
  <Button.Triggers>
    <EventTrigger RoutedEvent="Click">
      ...
    </..
  </..
</..

Cependant, je cherche à déclencher la gâchette uniquement si certaines conditions sont remplies. Normalement, vous utilisez MultiTriggers pour répondre à plusieurs conditions. c'est-à-dire:

<Button>
  <Button.Triggers>
    <MultiDataTrigger>
      <MultiDataTrigger.Conditions>
         <Condition Binding="..." Value="..."/>
         <Condition Binding="..." Value="..."/>
      </..
    </..
  </..
</..

Cependant, ni MultiTrigger ni MultiDataTrigger ne semblent prendre en charge le déclenchement sur des événements routés. Est-il même possible de mélanger ces deux concepts d'événements et de conditions routés en XAML?

Était-ce utile?

La solution

Je ne pense pas que ce soit le cas. Ce n’est pas ce que vous pensez, de toute façon.

Les codes MultiTrigger et MultiDataTrigger sont déclenchés lorsque plusieurs propriétés ont les valeurs correspondantes en même temps . C'est quelque chose qui peut facilement arriver parce que c'est basé sur l'état. Il est basé sur des valeurs qui restent les mêmes, au moins pendant un certain temps.

Les événements, d’autre part, se produisent puis disparaissent. Comment pouvez-vous réagir à deux événements multiples, quand ils ne se produisent pas au même moment?

Vous devez utiliser votre EventTrigger s - peut-être dans des paires set-enter / set-leave - pour définir l'état de certaines propriétés (les propriétés attachées paraissent bien ici), puis créez un MultiTrigger qui a examiné ces propriétés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top