ContentControl模型的类型具有一个 Content 属性。Content 属性的类型为 Object,因此,对于您在 ContentControl 中可以放置的内容没有任何限制。可以使用可扩展应用程序标记语言 (XAML) 或代码来设置 Content。以下控件使用 ContentControl 内容模型;Button、ButtonBase、CheckBox、ComboBoxItem、ContentControl、Frame、GridViewColumnHeader、GroupItem、Label、ListBoxItem、ListViewItem、NavigationWindow、RadioButton、RepeatButton、ScrollViewer、StatusBarItem、ToggleButton、ToolTip、UserControl、Window
在Content中只能放置一个控件(可以放置一个容器,然后再在容器中放置多个控件)。
严格地说,Content的内容应该放置于<XXX.Content></XXX.Content>内部,但也可以省略此标记。如在按钮中放置一图片可以有以下几种写法:
<!--方法一-->
<Button Margin="5">
<Button.Content>
<Image Source="Images/DVD.png" Width="48" Height="48" />
</Button.Content>
</Button>
<!--方法二-->
<Button Margin="5">
<Image Source="Images/DVD.png" Width="48" Height="48" />
</Button>
<!--如果是字符串,或者是数组绑定、资源引用还可以-->
<Button Margin="5" Content="Button Text" />
另外,还可以使用代码来为ContentControl指定相应的Content属性,如:
TextBlock date = new TextBlock();
date.Text = DateTime.Now.ToString("yyyy-MM-dd");
TextBlock time = new TextBlock();
time.Text = DateTime.Now.ToString("hh:mm:ss");
StackPanel panel = new StackPanel();
panel.Children.Add(date);
panel.Children.Add(time);
btn.Content = panel;
HeaderedContentControl模型
HeaderedContentControl类继承ContentControl类,表示带有Header的ContentControl,其除了具有ContentControl的Content属性外,还具有一个Header属性,Header的类型也是Object对象,与Content属性的用法类似。从 HeaderedContentControl 继承的控件有:Expander、GroupBox、TabItem。
如定义一个带有图片和文字标题的Expander:
<Window x:Class="WPFControlContentModule.winHeaderedContentControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Headered Content Control" Height="200" Width="300">
<Canvas><Expander Margin="5" HorizontalAlignment="Center"><Expander.Header>
<StackPanel Orientation="Horizontal">
<Image Source="Images/Users.png" Width="32" Height="32" />
<TextBlock Text="User Info" VerticalAlignment="Center" />
</StackPanel>
</Expander.Header>
<Expander.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="UserName:" HorizontalAlignment="Right"
Grid.Row="0" Grid.Column="0" Margin="3"/>
<TextBlock Text="Tom" HorizontalAlignment="Left"
Grid.Row="0" Grid.Column="1" Margin="3"/>
<TextBlock Text="Gender:" HorizontalAlignment="Right"
Grid.Row="1" Grid.Column="0" Margin="3"/>
<TextBlock Text="Male" HorizontalAlignment="Left"
Grid.Row="1" Grid.Column="1" Margin="3"/>
<TextBlock Text="Age:" HorizontalAlignment="Right"
Grid.Row="2" Grid.Column="0" Margin="3"/>
<TextBlock Text="23" HorizontalAlignment="Left"
Grid.Row="2" Grid.Column="1" Margin="3"/>
</Grid></Expander.Content></Expander></Canvas></Window>