资料太少.中文没有.英文的也残缺不全.待补充.问题暂时解决.
设计器通过使用命名约定来发现自定义设计时程序集
运行时程序集与设计时程序集对应关系
加载顺序 | 程序集名称(*表示版本号,可省略) | |
0 | ControlLibrary.dll | 运行时程序集 |
1 | ControlLibrary.Design.*.dll | 设计时程序集(Visual Studio和Blend公用) |
2 | \Design\ControlLibrary.Design.*.dll | 设计时程序集(Visual Studio和Blend公用) |
3 | ControlLibrary.VisualStudio.Design.*.dll | 设计时程序集(Visual Studio专用) |
3 | ControlLibrary.Expression.Design.*.dll | 设计时程序集(Blend专用) |
4 | \Design\ControlLibrary.VisualStudio.Design.*.dll | 设计时程序集(Visual Studio专用) |
4 | \Design\ControlLibrary.Expression.Design.*.dll | 设计时程序集(Blend专用) |
使用IProvideAttributeTable接口
[assembly: ProvideMetadata(typeof(CustomControlLibrary.Design.Metadata))] namespace CustomControlLibrary.Design { internal class Metadata : IProvideAttributeTable { public AttributeTable AttributeTable { get { AttributeTableBuilder builder = new AttributeTableBuilder(); builder.AddCustomAttributes( typeof(Test), new FeatureAttribute(typeof(TestDefaults))); return builder.CreateTable(); } } } }
使用基类DefaultInitializer提供初始化默认值
namespace CustomControlLibrary.Design { public class TestDefaults : DefaultInitializer { public override void InitializeDefaults(ModelItem item) { item.Properties["Context"].SetValue(new TextBox()); } } }
可用基类包含:
DefaultInitializer(默认值初始化);
AdornerProvidres(为 WPF 控件提供容器,这些控件在设计时用作装饰器);
PrimarySelectionContextMenuProvider(为当前所选内容显示的一组 MenuGroup 项);
PrimarySelectionAdornerProvide(为主选项显示的一组装饰器)
...等
如对本文有疑问, 点击进行留言回复!!
c# .net无限递归获取分类,传统for无限递归和 linq无限递归获取分类
【线性 dp】A005_LC_不同的子序列(记忆化 / dp 分类讨论)
在unity中使用TimeLine和PlayableDirector来实现简单的运镜
网友评论