WPF之ContentControl

简单介绍:

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容