Showing posts with label ListBoxItem Double click Event. Show all posts
Showing posts with label ListBoxItem Double click Event. Show all posts

Tuesday, September 20, 2011

Silverlight ListBoxItem Double Click Event

Following is the Code snippet for the List Box Item double click event using Silverlight 4:

XAML (MainPage.Xaml):
CODE(MainPage.Xaml.cs):

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Browser;
using System.Windows.Input;
namespace ListBoxDoubleClick
{
    public partial class MainPage : UserControl    {
        Point _clickPosition;
        public DateTime _lastClick = DateTime.Now;
        private bool _firstClickDone = false;
        public MainPage()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(MainPage_Loaded);
        }
        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            for (int i = 1; i < 11; i++)
            {
                ListBoxItem lbitem = new ListBoxItem();
                lbitem.Name = "lb_" + i;
                lbitem.Content = "This is ListBoxItem No:" + i;
                lbitem.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(ListBoxItem_DoubleClickEvent), true);
                listBox1.Items.Add(lbitem);
            }
        }
        private void ListBoxItem_DoubleClickEvent(object sender, MouseButtonEventArgs e)
        {
            ListBoxItem element = sender as ListBoxItem;
            if (element == null)
                return;
            DateTime clickTime = DateTime.Now;
            TimeSpan span = clickTime - _lastClick;       
            if (span.TotalMilliseconds > 300 || _firstClickDone == false)
            {
                //Single Click                lblMsg.Content = string.Format("ListBoxItem \" {0}\" is Single clicked. ", element.Content );
                _clickPosition = e.GetPosition(element);
                _firstClickDone = true;
                _lastClick = DateTime.Now;
            }
            else            {
                Point position = e.GetPosition(element);
                //Double Click                if (Math.Abs(_clickPosition.X - position.X) < 4 && Math.Abs(_clickPosition.Y - position.Y) < 4) //mouse didn't move => Valid double click                {
                    lblMsg.Content = string.Format("ListBoxItem \" {0}\" is Double clicked. ", element.Content);
                    /// Your logic goes here for double click event                    ///                 }
           
                _firstClickDone = false;
            }
        }
    }
}
SAMPLE OUTPUT: 






SOURCE DOWNLOAD LINK: 
ListBox Double Click