0

マウスでクリックしたときに、ユーザーがシングルクリックまたはダブルクリックするかどうかを制御したいと思います。だから私はこのコードを使用します:

private void MouseSingleClickCommand(RoutedEventArgs e)
{
    _dtMouseClick.Start();
}


private void MouseClick_Tick(object sender, System.EventArgs e)
{
    _dtMouseClick.Stop();

    //my one click code
}



private void MouseDoubleClickCommand(MouseButtonEventArgs e)
{
    _dtMouseClick.Stop();
    //code of the double click
}

_dt は、ビュー モデルのコンストラクターで作成される DispatcherTimer です。

_dtMouseClick =
                new System.Windows.Threading.DispatcherTimer(
                new TimeSpan(0, 0, 0, 0, 200),
                System.Windows.Threading.DispatcherPriority.Background,
                MouseClick_Tick,
                System.Windows.Threading.Dispatcher.CurrentDispatcher);

ただし、ディスパッチャーは停止していないため、ワンクリックのコードは常に実行されます。

どうして?。

ありがとう。

編集:ボタンのaxmlを含めます:

<StackPanel Height="Auto" HorizontalAlignment="Left" Margin="548,0,0,0" Name="stpBotnoesBasicos" VerticalAlignment="Top" Width="Auto">
                    <Button Content="Buscar" Height="23" Name="btn01" Width="75">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Click">
                                <cmd:EventToCommand Command="{Binding MouseSingleClickCommand}" PassEventArgsToCommand="True"/>
                            </i:EventTrigger>

                                <i:EventTrigger EventName="MouseDoubleClick">
                                <cmd:EventToCommand Command="{Binding MouseDoubleClickCommand}" PassEventArgsToCommand="True"/>
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                    </Button>
</Stackpannel>
4

2 に答える 2