当前位置: 首页 > news >正文

WPF 自定义容器控件的布局

看项目代码的时候遇到的一种界面设计,关于自定义容器控件和附加属性的,之前没遇到过。

看下面这段Xaml代码:

每一个ListBox里面有一个附加属性:

其中ui:Form是我的自定义容器控件:

public class Form : ItemsControl { static Form() { DefaultStyleKeyProperty.OverrideMetadata(typeof(Form), new FrameworkPropertyMetadata(typeof(Form))); IsTabStopProperty.OverrideMetadata(typeof(Form), new FrameworkPropertyMetadata(false)); } //确定Item是否是(或者是否可以作为)其自己的Container protected override bool IsItemItsOwnContainerOverride(object item) { return item is FormItem || item is FormHeader || item is Form; } //用于返回Item的Container //即如果Item的类型不是FormItem,就将它作使用FormItem包装起来 protected override DependencyObject GetContainerForItemOverride() { return new FormItem(); } }

界面效果是下面这样:

红色框起来的是LIstBox,黄色框的是Label。

我很疑惑这些Label控件是怎么来的。

经过我的寻找:

我发现这种样式是针对FormItem的,FormItem也是自定义的控件,并且在自定义容器控件Form中有涉及到:

protected override DependencyObject GetContainerForItemOverride() { return new FormItem(); }

查阅了相关资料,明白了其中缘由:

如果ItemsControl的Items内容不是对应的子元素控件,ItemsControl会创建对应的子元素控件作为容器再把Item放进去

上面GetContainerForItemOverride的作用就是在ListBox和TextBox外包裹一个FormItem控件;

也可以理解为虽然在Xaml中代码没有写上FormItem控件,但是在容器控件CS代码中有写;

在界面的视觉树中可以体现:

结构与FormItem定义的样式相同。

http://www.rkmt.cn/news/1509220.html

相关文章:

  • 给嵌入式工程师的CSI-2协议实战拆解:从PHY层到Packet,手把手分析图像数据流
  • 百度网盘直链解析终极指南:告别龟速下载,重获下载自由
  • Vivado资源报告怎么看?从Utilization报告里揪出LUTRAM浪费和DSP使用不足的‘元凶’
  • 太原市黄金回收白银回收铂金回收彩金回收靠谱门店TOP排行榜及联系方式地址电话+诚信店铺推荐 - 大熊猫898989
  • 铜川市黄金回收白银回收铂金回收彩金回收靠谱门店TOP排行榜及联系方式地址电话+诚信店铺推荐 - 大熊猫898989
  • 2026年口碑好的综合高中哪家可靠?权威解析
  • 2026亚太EMBA排名前三榜单解析|五大顶尖亚太EMBA项目盘点
  • 2026年6月在线ORP仪主要品牌排行榜:国产技术突围与场景化选型全解析 - 仪表品牌榜
  • 同是化纤混丝假发,铂贝卡凭什么跳出 “头顶蒸笼” 困境?实测拆解硬核优势
  • 从收音机到手机:聊聊BJT这个“老古董”为什么还在现代电路里不可或缺
  • TX3 Mini电视盒Armbian部署完全手册:从废弃设备到高效Linux服务器的华丽转身
  • 深耕中医茶疗养生与现代应用,娄天裕受聘:卫健委第一健康报道“健康宣传大使”
  • INSAR相位解缠MATLAB工具包:枝切法+质量引导+洪水填充一站式实现
  • CT图像重建速度翻倍?深入聊聊OS-SART算法中的‘有序子集’到底怎么玩
  • 三沙市黄金回收白银回收铂金回收彩金回收靠谱门店TOP排行榜及联系方式地址电话+诚信店铺推荐 - 大熊猫898989
  • 鸿蒙原生应用实战(五):编译构建与性能优化 —— 从开发到上架
  • 3分钟掌握手机号定位技术:免费开源工具让地理位置查询变得简单
  • 告别舞台灯光盲区:用STM32F0单片机手把手实现DMX512信号解码(附完整代码)
  • 三亚市黄金回收白银回收铂金回收彩金回收靠谱门店TOP排行榜及联系方式地址电话+诚信店铺推荐 - 大熊猫898989
  • 百度网盘直链解析技术深度解析:绕过限速实现高速下载的技术实现
  • 从‘天书’到蓝图:一文读懂Gerber文件里每个层(.gbr)到底在告诉工厂什么
  • Barlow字体技术深度解析:从加州公路标识到数字设计的变量革命
  • 百度网盘资源工具终极指南:3分钟学会一键获取提取码的完整方法
  • 深入DHT11单总线协议:用STM32 HAL库微秒级延时精准读取温湿度数据
  • AutoCAD里能拖拽选中的自定义直线插件(ObjectARX C++源码工程)
  • 从SIM卡到数字人民币:聊聊TLV编码那些“不起眼”却无处不在的应用场景
  • FastAPI构建ML-Ready API:契约驱动的生产级模型服务
  • MATLAB光纤光栅建模工具包:含均匀/啁啾/长周期FBG的反射谱、时延与色散仿真
  • 酒泉市黄金回收白银回收铂金回收彩金回收靠谱门店TOP排行榜及联系方式地址电话+诚信店铺推荐 - 大熊猫898989
  • 百度网盘直链解析工具:告别限速,实现高速下载自由