To change the default appearance of a cell you have to either style it or template it:

In order to template it use CellTemplate property.

If you want to style it, define an appropriate style targeting all elements of the type or set is as CellStyle for a column. To learn more read the Styling a Cell chapter.

You can also change the default look of a cell when it is in edit mode by setting an appropriate CellEditTemplate.

This help article explains how to set CellTemplate/CellEditTemplate in details.

In a scenario when there is a column.CellEditTemplate defined, the new value of the editor is not available in the arguments of the CellEditEnded event raised when commiting an edit. To get the right value in e.NewValue, you can create your own custom column and override its GetNewValueFromEditor method.

This help article explains how to create a custom column with a button in details.

This help article explains how to create a column with a custom editor in details.

To change the look and the appearance of header cells you have to define an appropriate style and set it to the HeaderCellStyle property of the column. To learn how to do that take a look at the Styling the Column Headers topic.

To learn more about the column headers take a look at the Column Headers topic.

GridViewColumn provides out-of-the-box mechanism for customizing the visual appearance of its text content. This can be achieved through the TextWrapping, TextAlignment, TextTrimming and TextDecorations properties.