1

私はWPFが初めてで、ボタンが押されたときに(任意のタイプの入力デバイスを使用して)コードを実行しようとしていました。

しかし、Button イベントを見ると、一致するものがかなり多くありました。

  • マウスダウン
  • KeyDown
  • スタイラスダウン
  • タッチダウン
  • PreviewMouseDown
  • PreviewKeyDown
  • PreviewStylusDown
  • プレビュータッチダウン

ボタンがいつ離されたかを知る必要があるため、クリックは私には適していないと思います。では、これらのイベントごとにイベント ハンドラーを作成する必要がありますか?それとも、すべての入力タイプを含める簡単な方法はありますか?

また、「プレビュー」イベントと通常のイベント (MSDN では見つかりませんでした) の違いは何ですか?

4

2 に答える 2

2

Click イベントが必要だと思います。

WPF ボタンには、Click イベントがいつ発生するかを制御する ClickMode プロパティがあることに注意してください。

ButtonBase.ClickMode プロパティ

ClickMode プロパティのデフォルト値は Release です。Specifies that the Click event should be raised when a button is pressed and released.

ClickMode列挙体

Rachel が言ったように、実際のイベントが発生する前にプレビュー イベントが発生します。

ボタンが押されたときと離されたときの両方のイベントが必要なため、Click イベントは機能しません。IsPressedプロパティにバインドできる場合があります。

<Style x:Key="Triggers" TargetType="Button">
  <Style.Triggers>
    <Trigger Property="IsPressed" Value="true">
      <Setter Property = "Foreground" Value="Green"/>
    </Trigger>
  </Style.Triggers>
</Style>

イベントを発生させる必要がある場合は、トリガーで Setter の代わりにEventSetterを使用できる場合があります。

于 2012-11-08T19:04:15.910 に答える
0

すべてのイベントに1つのイベントハンドラーを使用できますが、それは役に立ちますか?

   <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="86,84,0,0" Name="button1" VerticalAlignment="Top" Width="75" 
                        MouseDown="button1_generalInput"
                        KeyDown="button1_generalInput"
                        StylusDown="button1_generalInput"
                        TouchDown="button1_generalInput"/>

private void button1_generalInput(object sender, EventArgs e)
        {

        }
于 2012-11-08T19:14:47.583 に答える