2

WPF ユーザー コントロールに Border を作成し、Touch Down および Mouse Left Button Down イベントにサインアップしました。

    <Border 
            TouchDown="Border_TouchDown_1" 
            MouseLeftButtonDown="Border_MouseLeftButtonDown_1">

        <Label FontSize="28">Label</Label>
    </Border>

コード ビハインド ファイルには、次のイベント ハンドラーがあります。

    private void Border_TouchDown_1(object sender, TouchEventArgs e)
    {
        e.Handled = true;
        Result.Append("Border_TouchDown_1" + "\n");
        LogText = Result.ToString();
        RaisePropertyChange();
    }
    private void Border_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e)
    {
        Result.Append("Border_MouseLeftButtonDown_1" + "\n");
        LogText = Result.ToString();
        RaisePropertyChange();
    }

Windows 8 のタッチ ジェスチャでは、イベントが Border_TouchDown_1 メソッドで処理されている場合でも、両方のイベント ハンドラーがトリガーされます。Windows 7 では、イベントが処理されるため、Border_TouchDown_1 メソッドのみが呼び出されるのが正しいように見えます。

Microsoft は両方のイベントを起動して、すべてのアプリケーションをタッチ対応にすることを簡潔に決定したと思いますが、これはマウスのみのアプリケーションでは問題ありませんが、私のアプリケーションはタッチ対応であり、この動作をオフにしたいと考えています。

そこにいくつかの内部を持っている人はいますか???

4

1 に答える 1

2

何があなたの心を吹き飛ばすか知っていますか?を設定e.Handled = trueしないと、マウス イベントが発生しません (少なくとも PreviewTouchDown / PreviewMouseDown の場合)。誰かが Windows 8 でタイプミスをしたようで、逆方向に動作しています。

于 2013-02-22T21:26:13.453 に答える