资料太少.中文没有.英文的也残缺不全.待补充.问题暂时解决.

设计器通过使用命名约定来发现自定义设计时程序集

运行时程序集与设计时程序集对应关系

加载顺序 程序集名称(*表示版本号,可省略)  
 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(为主选项显示的一组装饰器)

...等

WPF设计时的更多相关文章

  1. wpf设置设计时的ViewModel

    原文:wpf设置设计时的ViewModel wpf mvvm开发中,有些情况下,你的view不一定设置DataContext,但是你又想在设计阶段,能够自动提示你的view绑定的viewmodel的内 ...

  2. 必须要会的技能(一) 如何实现设计时Binding

    今天我们来分享一个主题:DesignTime Binding设计时绑定. 这一项技术可以使用在所有包括WPF及其衍生出来的技术上,比如Sliverlight,当然也包括UWP 先来说明一下设计时Bin ...

  3. dt.jar设计时rt.jar运行时

    很多人在初学Java的时候,都要配置环境变量.在配置CLASSPATH的时候,都会加上一个当前目录.,还有两个jar:dt.jar和tools.jar.其实好多人都不了解这两个jar的作用,尤其是dt ...

  4. 为什么要提倡"Design Pattern"呢? 开闭原则 系统设计时,注意对扩展开放,对修改闭合。

    [亲身经历] 无规矩不成方圆 设计模式 - 搜狗百科 https://baike.sogou.com/v123729.htm?fromTitle=设计模式 为什么要提倡"Design Pat ...

  5. 解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)

    总结起来就是:设计器的版本要跟外部引用的库版本一致,否则XAML设计器就会显示不出来. 例如你的程序是X64的,但是引用的COM组件是32位的,就会显示不出来.这里的建议是:编译一个32位的COM中间 ...

  6. 让VS2019支持.NET Core WinForms和WPF设计器的临时办法(比微软给出的办法更方便)

    参考以下代码片段,给项目添加NET Framework目标框架,切换到NET472运行时重新生成项目,然后打开设计器界面. 如果遇到设计器报错,尝试以NET472运行时为目标重新生成项目,并重新打开V ...

  7. 让VS2019支持.NET Core WinForms和WPF设计器的临时办法(转)

    .net core 3.0 Preview 6,vs2019 16.1.4 暂时还不支持Winform designer 解决方案: 将Form1修改为其他名字 WinForm   编辑项目文件  加 ...

  8. DIV CSS设计时IE6、IE7、FF 与兼容性有关的特性(转载的)

    在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼容,不然,你的网乱可能出去不想出现的效果! 所有浏览器 ...

  9. [转载]DIV CSS设计时IE6、IE7、FF 与兼容性有关的特性

    在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼容,不然,你的网乱可能出去不想出现的效果! 所有浏览器 ...

随机推荐

  1. docker下安装tensorflow

    一,查找镜像 root@xushi:~# docker search tensorflow NAME DESCRIPTION STARS OFFICIAL AUTOMATED tensorflow/t ...

  2. js jquery 取得周月年时间

    function formatDate(date) { var myyear = date.getFullYear(); var mymonth = date.getMonth() + 1; var ...

  3. SQL判断如果一列值为null则取另一列值代替 isnull()

    [chClientCode] ,[nvcClientName] ,[chRegionCode] ,isnull(chUltimateHeadClientCode,[chClientCode]) as ...

  4. springMVC学习 四 请求的中文乱码解决

    在使用SpringMVC时,同样有前端向后端发送请求,请求参数中有中文,需要解决中文乱码问题,在Spring中也是向java web中一样,通过一个过滤器来解决中文乱码. 这个过滤器在spring-w ...

  5. Mac 环境通用

    mac 下更新 .bash_profile 文件 1.打开terminal(终端) 2.cd ~ ( 进入当前用户的home目录) 3.open .bash_profile (打开.bash_prof ...

  6. 54.NSJSONSerialization类进行json解析(字符串“UTF-8解码”)

    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllo ...

  7. 算法工程师B

    美团点评2017校招笔试真题-算法工程师B   1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 ...

  8. 2018.11.02 NOIP模拟 飞越行星带(最小生成树/二分+并查集)

    传送门 发现题目要求的就是从下到上的瓶颈路. 画个图出来发现跟去年noipnoipnoip提高组的奶酪差不多. 于是可以二分宽度+并查集检验,或者直接求瓶颈. 代码

  9. mac os下提高android studio运行速度终极方法

    /Users/hangliao/ 删除(.android  .gradle)两个文件夹 android studio恢复所有设置到初始化状态,这样会删除已创建的模拟器,所以需从创建一下模拟器 mac ...

  10. mysql知识积累

    验证mysql工作状态 systemctl status mysql.service 启动 sudo systemctl start mysql 停止 service mysql stop 重启mys ...