2017-02-23 3 views
0

現在、ボタンに何が行われているかに基づいてトリガーイベントを持つWPFアプリケーションにいくつかのボタンを作成しようとしています。複数のトリガーイベントを追加する際に問題があります。下のコードでは、isPressedのトリガーは機能しませんが、isMouseOverはトリガーします。トリガーの1つを削除すると機能しますが、一緒に機能することはありません。WPFトリガーイベントに関する問題

ボタンを無効にしても、トリガープロパティに無効なものが含まれていないような場合は、画像の変更を追加する必要があります。私はこの変更をC#コードで行う必要があります。誰かがこれについてのアイデアを持っているなら、それは素晴らしいでしょう!

ご協力いただきましてありがとうございます。

<Button Name="testbutton"  
     Background="Transparent" 
     Cursor="Hand" 
     Visibility="Visible" Grid.Column="2" Grid.Row="1" Margin="10" ToolTip="Exits The Application"> 
      <Button.Template> 
       <ControlTemplate TargetType="Button"> 
        <StackPanel> 
         <Image Name="exitstatic" 
           Source="{StaticResource exit static}" 
           Stretch="Fill" 
           Visibility="Visible" /> 
         <Image Name="exithover" 
           Source="{StaticResource exit hover}" 
           Stretch="Fill" 
           Visibility="Collapsed" /> 
         <Image Name="exitdisabled" 
           Source="{StaticResource exit disabled}" 
           Stretch="Fill" 
           Visibility="Collapsed" /> 
        </StackPanel> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsPressed" 
           Value="true"> 
          <Setter TargetName="exitdisabled" 
            Property="Visibility" 
            Value="Visible" /> 
          <Setter TargetName="exithover" 
            Property="Visibility" 
            Value="Collapsed" /> 
         </Trigger> 

         <Trigger Property="IsMouseOver" 
             Value="true"> 
          <Setter TargetName="exithover" 
            Property="Visibility" 
            Value="Visible" /> 
          <Setter TargetName="exitstatic" 
            Property="Visibility" 
            Value="Collapsed" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Button.Template> 
     </Button> 

答えて

1

IsPressedが真であるときはいつでも、IsMouseOverは、マウスが事を押してそこに持っているという理由だけで、また事実です。実際には、IsPressedトリガーセッターが適用されますが、IsMouseOverトリガーセッターが適用され、IsPressedセッターが何をしたかが決まります。

2つのトリガーの順序を逆にするため、IsPressedトリガーが2番目に評価され、代わりにIsPressedで設定された値が使用されます。これはトリガを持つよくある問題点です。

あなたの2番目の質問に関する限り、私は<Trigger Property="IsEnabled" Value="False">で何のトラブルも経験したことはありません。

+0

@ mcavanaugh418、合意された、トリガーはリストされたように連続して処理されます...最後の勝ちです。 – DRapp

+1

ありがとうございます。それはとてもシンプルで、私はそれを捕まえなかったとは信じられません。また、IsEnabledプロパティが不足しているはずです。それを指摘してくれてありがとう、ちょうど私が必要としたもの。 – mcavanaugh418