Thiago
Thiago

Reputation: 2258

raising events passing parameters in wpf

I'd like to add tabs to my window when an item in the GridView is double-clicked. But the tab that will be added depends on the clicked item. Which way should I do this on WPF? I thought about RoutedEvents, but I don't know how to pass a parameter with it. Any suggestions?

Upvotes: 1

Views: 5395

Answers (2)

Danny Varod
Danny Varod

Reputation: 18068

Use commands rather than routed events:

Set a command for the clicked item and pass the clicked item's reference as the command's parameter using RelativeSource binding in the XAML.

Upvotes: 0

JustABill
JustABill

Reputation: 1559

This codeproject article covers using a new RoutedEvent with a different argument type than just RoutedEventArgs (rather far down, search for "Second using custom RoutedEventArgs"), though I wish WPF included a version of RoutedEventHandler like the CLR's EventHandler<T> where T : EventArgs so you didn't have to declare a new delegate every time.

The summary:

  • Create a new type that subtypes RoutedEventArgs and has properties for your data.
  • Make sure your RoutedEventArgs subtype implements the non-default constructors of RoutedEventArgs as those are needed for it to work.
  • Declare a new delegate that matches this subtype.
  • Use as you would any other custom event in your code (also covered in that link).

Upvotes: 6

Related Questions