We've already seen a number of simple examples of the DataTemplate, but they are such an important part of WPF that we're going to have a much more thorough look at them now. In short, we use a DataTemplate to define how we want particular data objects to be rendered in the UI.
If we were to data bind a particular type of object to a UI control without providing a DataTemplate for it, the WPF Framework would not know how to display it. Let's highlight this with an example:
<ItemsControl ItemsSource="{Binding Users}" />
In these cases, the best job that the WPF Framework can do is to display a string representation of each object. It achieves this by calling the object.ToString method on the data object and setting that value to the Text property of a TextBlock, which it uses to display the object. If this method has not been overridden in the object's class, this will result in the name of the type of the object being displayed in its...