Below i mention link for your reference please check it..
WPF DataGrid Practical Examples
if you finding solution then mark as answered..
This is solution regarding your second query..
yes you are right....yes it is possible..
public override void Execute(object parameter)
var context = parameter as GenerateColumnContext;
DataGridTextColumn column = new DataGridTextColumn();
if (context.PropertyName == "Country")
column.Header = "header for Country";
context.Result = column;
May be this can help you further...
If you getting your answer related to this post then please mark as answered..