2016-12-12 1 views
0

Est-ce que le moyen de faire Checked et Unchecked seulement le feu quand le bouton a cliqué par l'utilisateur?événement de feu seulement de la demande de l'utilisateur

IsChecked est lié à la propriété Playing. Cette valeur peut changer d'arrière-plan (pas par l'utilisateur). Ainsi, les événements Checked et Unchecked se déclenchent à nouveau et entrent en conflit avec d'autres éléments.

Lorsque j'essaie d'écrire du code pour résoudre ce problème, cela devient un vrai désordre. Merci de votre aide.

<ToggleButton x:Name="TogglePlay" Width="90" 
       Style="{DynamicResource TogglePlay}" 
       IsChecked="{Binding SessionData.Playing}" 
       Checked="TogglePlay_Checked" Unchecked="TogglePlay_OnUnchecked"/> 
<StackPanel.Resources> 
    <Style x:Key="TogglePlay" TargetType="ToggleButton"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding IsChecked , ElementName=TogglePlay}" Value="False"> 
       <Setter Property="Content" Value="Play" /> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding IsChecked , ElementName=TogglePlay}" Value="True"> 
       <Setter Property="Content" Value="Pause" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</StackPanel.Resources> 

Répondre

1

Vous pouvez essayer d'utiliser le mode de liaison "OneWayToSource"

+0

Merci. Cela résout la plupart des problèmes. un problème est que lorsque le joueur s'arrête à l'arrière-plan, le contenu du bouton n'est pas mis à jour. –

+0

Essayez de lier la propriété Content en mode TwoWay/OneWay et la propriété IsChecked en mode OneWayToSource. – acidhills

+0

Peut-être dans votre situation, vous devez désactiver la liaison IsChecked, et simplement lier le contenu. – acidhills