日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

wpf控件设计时支持(1)

發布時間:2025/6/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wpf控件设计时支持(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
wpf控件設計時支持(1) 原文:wpf控件設計時支持(1)

?? 這部分內容幾乎是大家忽略的內容,我想還是來介紹一下.

本篇源碼下載

1.屬性元數據

在vs IDE中,在asp.net,winfrom等開發環境下,右側的PropertyGrid屬性面板,會對屬性進行分類,這有利于了解控件屬性的用途.

若你之前在.net平臺下做過控件開發,你應該知道這些功能是通過屬性元數據實現的,比如使用Category元數據,把Content屬性分到Content類別下.

[Category("Content")] public object Content { get; set; }

?

這種方法在開發wpf自定義控件依然可用.我們以名為DesginCustomControl的自定義控件為例子.因為是wpf控件,所以屬性變更為依賴項屬性.

public class DesginCustomControl : ContentControl {[Category("Content")]public string Content{get { return (string)GetValue(ContentProperty); }set { SetValue(ContentProperty, value); }}public static readonly DependencyProperty ContentProperty =DependencyProperty.Register("Content", typeof(string), typeof(DesginCustomControl), new UIPropertyMetadata(String.Empty));}

效果如下:

2.屬性元數據集合

?

wpf的設計時允許我們將這些元數據與控件屬性分離出來.下面我們來實現一個簡單的功能

2.1新建一個設計時支持的單獨項目

WPF.Controls是控件項目,WPF.Controls.VisualStudio.Design是控件設計時項目

注意:

(1)程序集命名約定

設計時的程序集是有命名約定的,這樣才可以受到VisualStudio的支持.如控件程序集是WPF.Controls,那么設計時程序集則是

控件程序集的名字+VisualStudio.Design

(2)設計時程序集編譯位置

設計時程序集必須與控件存放在同個目錄下才能工作,引用控件的項目無需引用設計時程序集

假設WPF.Controls的編譯目錄沒有做變更的話,那么WPF.Controls.VisualStudio.Design這個項目編譯好后是存在在WPF.Controls的bin目錄下面的.

(3)引用Microsoft.Windows.Design程序集

Microsoft.Windows.Design是wpf設計時支持的基礎,所以要引用這個程序集

2.2注冊屬性的元數據集合

實現一個名為IRegisterMetadata的接口。來看一下代碼

public class WPFControlsCommonMetadata : IRegisterMetadata {public void Register(){AttributeTableBuilder MainBuilder = new AttributeTableBuilder();MainBuilder.AddCustomAttributes(typeof(DesginCustomControl),DesginCustomControl.ContentProperty,new Attribute[]{new CategoryAttribute("Content")});MetadataStore.AddAttributeTable(MainBuilder.CreateTable());} }

?

AttributeTableBuilder是屬性元數據表,msdn是解釋屬性表.AttributeTableBuilder有多個AddCustomAttributes重載方法.可以將元數據附加到屬性上.比如上面代碼給DesginCustomControl的Content屬性添加了一個CategoryAttribute元數據.添加完畢以后再通過

MetadataStore的AddAttributeTable方法添加屬性元數據表.MetadataStore稱之為元數據存儲區.

以上代碼的實現與在控件上直接掛元數據標簽效果是一樣.有什么不同點呢?

若我們為asp.net的內置控件擴展設計時的話,則必須繼承該控件.這里便不會有這個問題,兩者是完全分離的.

2.3延遲添加屬性元數據

上面的示例,直接在MainBuilder類中為控件添加元數據,當為比較多的控件添加元數據時,同時加載會出現性能問題,所以MainBuilder還提供了AddCallback方法,當需要時,才會為控件添加元數據.現以上示例代碼變更如下

public class WPFControlsCommonMetadata : IRegisterMetadata {public void Register(){AttributeTableBuilder MainBuilder = new AttributeTableBuilder();MainBuilder.AddCallback(typeof(DesginCustomControl),delegate(AttributeCallbackBuilder builder){builder.AddCustomAttributes(DesginCustomControl.ContentProperty, new Attribute[]{new CategoryAttribute("Content")});});MetadataStore.AddAttributeTable(MainBuilder.CreateTable());} }

?

是不是感覺很無聊,為了這么個東西還要去研究:),覺得的有用的就看一下吧,這篇就寫這么多,寫完就差不多可以放假回家了.

posted on 2018-11-10 02:07 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/9938026.html

總結

以上是生活随笔為你收集整理的wpf控件设计时支持(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久热综合| 97中文在线 | 免费av网址在线观看 | 精产国品一二三区 | 葵司一区二区 | 最新黄色网页 | 亚洲啪啪网站 | 欧美成人怡红院 | 欧美高清日韩 | 五月婷婷丁香网 | 日本综合久久 | 亚洲一区二区精华 | 久久中文字幕在线 | 狠狠操狠狠爱 | 精品无码一区二区三区电影桃花 | 天天想你在线观看完整版高清 | 国产中文在线播放 | 久久精国产 | 久草电影在线 | 中文字幕无产乱码 | 日本真人做爰免费视频120秒 | 97精品一区二区视频在线观看 | 波多野结衣家庭主妇 | 欧美亚洲一区二区三区四区 | 欧美亚洲少妇 | 国内外成人在线视频 | 亚洲av成人精品日韩在线播放 | 欧美xxxxxx片免费播放软件 | 亚洲妇女无套内射精 | 午夜看看 | 亚洲综合无码一区二区 | 国产内谢 | 玖玖精品 | 国产福利免费 | 国产精品一国产精品 | 亚洲无限码| 日韩中文久久 | 国产精品xxx视频 | 国产亚洲精品成人无码精品网站 | 国内精品视频在线 | 亚洲精品乱码久久久久久不卡 | 亚洲成人诱惑 | 一本大道一区二区 | www.97超碰 | 亚洲综合视频网站 | 欧美午夜一区二区三区 | 先锋成人| 国产麻豆剧传媒精品国产av | 清冷男神被c的合不拢腿男男 | 日韩欧美视频在线播放 | ,午夜性刺激免费看视频 | 少妇2做爰hd韩国电影 | 少妇一级淫免费播放 | 国产黄视频网站 | 中文字幕一区二区三区又粗 | 国产丝袜一区二区 | 久久国产电影 | 国产精品久久久精品 | 五个女闺蜜把我玩到尿失禁 | 就要爱爱tv | 一区二区欧美精品 | 极品久久久久久 | 国产日韩综合 | 日韩在线第三页 | 中文亚洲字幕 | 午夜av网址 | www网站在线免费观看 | 日韩欧美黄色大片 | 99资源站 | 综合激情久久 | 禁网站在线观看免费视频 | 精品视频在线免费 | 欧洲色视频 | 久久这里只有精品8 | 一级真人毛片 | 日韩成人av网站 | 蜜桃视频免费网站 | 婷婷四房综合激情五月 | 岛国毛片在线观看 | 成人涩涩软件 | 欧美天天影院 | 青青草av在线播放 | 欧美人妻精品一区二区三区 | 欧美日韩国产精品一区二区三区 | 国产热视频 | 9i看片成人免费 | 淫欲av| 男人天堂2020 | 亚洲图片自拍偷拍区 | 久久精品国产99精品国产亚洲性色 | 中文字幕人妻无码系列第三区 | 一区二区三区免费播放 | 国产三级理论片 | 日韩欧美片 | 国产成人精品av久久 | 国产精品1区2区3区4区 | 日本一区二区不卡在线观看 | 亚洲精品一区二区在线 | 欧美色图亚洲激情 |