"which column header ComboBox generated the event?"
(ComboBox)sender
is your handle to the ComboBox that generated the event.
If you need to access the header, or the column containing that ComboBox, you can use the VisualTreeHelper, as discussed here: How can I find WPF controls by name or type?
Based on the information in your question, this answer from that thread might be what you are looking for (by John Myczek) - sub out Window
for the type you want:
You can use the VisualTreeHelper to find controls. Below is a method
that uses the VisualTreeHelper to find a parent control of a specified
type. You can use the VisualTreeHelper to find controls in other ways
as well.
public static class UIHelper
{
/// <summary>
/// Finds a parent of a given item on the visual tree.
/// </summary>
/// <typeparam name="T">The type of the queried item.</typeparam>
/// <param name="child">A direct or indirect child of the queried item.</param>
/// <returns>The first parent item that matches the submitted type parameter.
/// If not matching item can be found, a null reference is being returned.</returns>
public static T FindVisualParent<T>(DependencyObject child)
where T : DependencyObject
{
// get parent item
DependencyObject parentObject = VisualTreeHelper.GetParent(child);
// we’ve reached the end of the tree
if (parentObject == null) return null;
// check if the parent matches the type we’re looking for
T parent = parentObject as T;
if (parent != null)
{
return parent;
}
else
{
// use recursion to proceed with next level
return FindVisualParent<T>(parentObject);
}
}
}
Call it like this:
Window owner = UIHelper.FindVisualParent<Window>(myControl);