This example demonstrates how to prevent an end-user from hiding a specific grid column. For this, you first need to create a RemoveColumnDropTarget class descendant and override the Drop method. Then, create a TableView class descendant and override the CreateEmptyDropTarget method, which should return an instance of the RemoveColumnDropTarget descendant. And finally, create an attached property for the AbsoluteVisible.IsEnable columns.
To prevent all columns from being hidden, use the built-in AllowMoveColumnToDropArea property.