Search code examples
c#windowseventsdynamiclistviewitem

Add event to dynamically created control


I am creating a UserControl. I have a char list of alphabet letters and I want to display those letters, so I create ListViewItems like this:

foreach (char letter in letterList)
        {
            this.stack.Children.Add(new ListViewItem
            {
                Content = letter
            });
         }

Now I want to add event, so when user clicks on specific letter, something specific happens.
Is there a way to do that, except creating individual ListViewItem for each letter?


Solution

  • How about this?

        ListViewItem lstvwalphabet;
        foreach (char letter in letterList)
         { 
                lstvwalphabet = new ListViewItem();
                lstvwalphabet.Content = letter;
                lstvwalphabet.PreviewMouseLeftButtonDown += ListViewItem_PreviewMouseLeftButtonDown;
                this.stack.Children.Add(lstvwalphabet);
         }
    

    Event for tracking which item is clicked.

        private void ListViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
          var item = sender as ListViewItem;
          if (item != null && item.IsSelected)
          {
            //Do your stuff
          }
        }