简单介绍:
ContentControl 是 WPF 里最基础的"单内容容器"。Button、Label、Window、ScrollViewer、GroupBox、ToolTip、UserControl 全都继承自它。掌握它,等于理解了 WPF"内容模型"的根基。
示例:
<Grid>
<ContentControl Content="{Binding UserSingle}">
<ContentControl.ContentTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Age}"/>
</StackPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Grid>
public partial class MainWindow : Window
{
public User UserSingle { get; set; } = new User();
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
UserSingle = new User { Name = "小明", Age = 18 };
}
}
public class User
{
public string? Name { get; set; }
public int Age { get; set; }
}

image.png
核心部件:
- Content 装的内容(任意 object)
- ContentTemplate,用 DataTemplate 决定内容怎么渲染
- Template,用 ControlTemplate 决定控件本身长什么样
注意:ContentTemplate vs Template 是最容易混的点:
ContentTemplate(DataTemplate):管内容怎么显示
Template(ControlTemplate):管控件外壳怎么显示
和ItemsControl 的区别:
ContentControl,可以装一个任意 object
ItemsControl,可以装多个IEnumerable