Content Models
Although the different kinds of WPF application types are useful,
the core of any presentation framework is in the presentation elements
themselves. In presentation systems of old, fundamentally we had "chunks
of look and behavior" (often called controls) and
"containers of chunks of look and behavior." In WPF, this
characterization doesn't really hold up very well. Many elements that
provide their own content and behavior can also be containers of
elements (and so on). As an example, let's take a look at a Button.
The first thing that may surprise you about a WPF Button object is that you don't need to use a
string as the content; it will take any .NET object. You've already seen
a string as a button's content (see Example 1-17).
Example 1-17. A button with string content
<Window ...>
<Button Width="100" Height="100">Hi</Button>
</Window>However, as Example 1-18 shows, you can also use an image (see Figure 1-11).
Example 1-18. A button with image content
<Window ...>
<Button Width="100" Height="100">
<Image Source="tom.png" />
</Button>
</Window>
Figure 1-11. A button with image content
You can even use an arbitrary control, like a TextBox, as shown in Example 1-19 and Figure 1-12.
Example 1-19. A button with control content
<Window ...>
<Button Width="100" Height="100">
<TextBox Width="75">edit me</TextBox>
</Button>
</Window>Figure 1-12. A button with control content
Further, ...