Question

In my WPF application I have Toggle Button, I want to detect when user double click on it (in both cases if it checked or unchecked).

How can I do that?

Thanks in advance

Was it helpful?

Solution 2

Use PreviewMouseDoubleClick event (msdn):

XAML:

<ToggleButton x:Name="tButton" Height="30" Content="MyButton"                      
              PreviewMouseDoubleClick="tButton_PreviewMouseDoubleClick"
            />

Code-behind:

private void tButton_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    tButton.IsChecked = !tButton.IsChecked.Value;
    e.Handled = true;

    //...
}

OTHER TIPS

You can use the OnPreviewMouseDoubleClick event

xaml:

   <ToggleButton Height="75" Width="100" PreviewMouseDoubleClick="Control_OnPreviewMouseDoubleClick"/>

code-behind:

private void Control_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    var toggleButtton = sender as ToggleButton;
    if (toggleButtton != null)
    {
        if (toggleButtton.IsChecked.HasValue)
        {
            if (toggleButtton.IsChecked.Value)
            {
                // Checked
            }
            else
            {
                // Unchecked

                // this will re-check the button if double-click unchecks it
                //
                toggleButtton.IsChecked = true;
                toggleButtton.Focus();
            }
        }
    }
}

This event is pretty easy with togglebuttons Xaml you write the following to get an EventHandler:

<ToggleButton Name="button1" MouseDoubleClick="button1_DoubleClick" />

In c# you write the following to get an EventHandler:

button1.MouseDoubleClick += new MouseButtonEventHandler(button1_DoubleClick);

And in both cases you need:

void button1_DoubleClick(object sender, MouseButtonEventArgs e)
{
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top