Hide/Un-Hide Columns using Context Menu in DataGrid in WPF


In my article on "Hide/Un-Hide Columns In DataGrid In WPF", we saw how to use it using CheckBoxes. In this article we will see how we can add a ContextMenu for the Header and that will perform our Hide/Un-Hide function.

Creating WPF Application Project

Fire up Visual Studio 2008 and Create a WPF Application and name the project as ContextMenuDGWPF.

First we need to create some sample data that will be loaded into DataGrid.

Above class is for our Employee Data to be bound to DataGrid.

Add the following code into Constructor of the Window.

Now run the application to see if Data is displayed!


Now we will tweak a litle bit. We will add the event handler AutoGeneratedColumns for DataGrid.

Add the handler in the constructor.

Now in the above added event we will generate our ContextMenu.

As you see in the above code we are looping through all the columns and adding a MenuItem to ContextMenu each time.

We need to add the above event handlers for MenuItem as we are going to Click/Check/Uncheck them at runtime.

Now in the Click event we will add the following code:

Here is the logic; when we click on the MenuItem only the Click event is handled, not the Check/Uncheck event. So we have Changed the IsChecked property each time the MenuItem is clicked. Then we can handle the Checked/Unchecked events.

Now we will do similar thing that we did in our last article.

Add the following code for Checked event of MenuItem.

Add the following code for UnChecked event of MenuItem.

Next is our major part where we will handle the RightMouseButtonDown event and identify whether we have right clicked on the Header or not.

It seems we are ready. Run the application.

As you see above we have successfully displayed the ContextMenu on Column Header.

Now we will perform the Hide/Un-Hide functions.

Hope this article helps.