国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

WPF Attached屬性相關概念解析

開發 開發工具
WPF Attached屬性這一知識點需要我們在不斷的實際開發使用中去慢慢體會其含義。這篇文章提供了一些基礎概念,希望對大家有所幫助。

WPF Attached屬性在實際使用中,是一個比較難以理解的一個部分。在這里我們可以了解到一些關于WPF Attached屬性的相關知識。#t#

我們再看一種特殊的Dependency屬性:WPF Attached屬性。Attached屬性可以非常高效地Attach到其他的對象中。
我們仍然用前面的一個簡單XAML代碼為例:

  1. < Window>   
  2. < StackPanel>   
  3. < Label>LabelText< /Lable>   
  4. < /StackPanel>   
  5. < /Window>   

現在,如果需要對StackPanel及其子元素設置字體大小,應該如何做呢?在Window元素中,WPF Attached屬性有一個屬性FontSize,可以直接設置。但是,StackPanel自己本身并沒有FontSize這樣的屬性。這就該Attached屬性出場了。這里我們需要用定義在TextElement元素中的Attached屬性FontSize來設置StackPanel的字體。

  1. < Window>   
  2. < StackPanel TextElement.
    FontSize
    =”30”>   
  3. < Label>LabelText< /Lable>   
  4. < /StackPanel>   
  5. < /Window>  

這樣,StackPanel的子元素就能通過屬性值繼承得到新的FontSize屬性。對于這樣的XAML代碼,XAML編譯器或者解析器看到這種語法時,就要求TextElement(有時也稱為Attached屬性提供者)有相應的靜態方法SetFontSize來設置對應的屬性值。因此,上面的WPF Attached屬性設置代碼,可以如下用C#實現:

  1. StackPanel panel = 
    new StackPanel();  
  2. TextElement.SetFontSize
    (panel, 30); 

從這里的代碼可以看出,Attached屬性并不神秘。只是調用方法把元素和不相關的屬性關聯起來。而SetFontSize實現也比較簡單。它只是調用了Dependency屬性訪問函數所調用的DependencyObject.SetValue方法。注意調用的對象是傳入的DependencyObject,而不是當前的實例:

  1. public static void SetFontSize
    (DependencyObject element, 
    double value) {   
  2. element.SetValue(TextElement.
    FontSizeProperty, value);   

同樣地,WPF Attached屬性也定義了對應的GetXXX函數。它調用的DependencyObject.GetValue方法:

  1. public static double GetFontSize
    (DependencyObject element) 
  2. { return (double)element.GetValue
    (TextElement.FontSizeProperty); 

與普通的Dependency屬性一樣,這些GetXXX和SetXXX方法除了實現對GetValue和SetValue的調用,不能做任何其他額外的工作。

其實,在WPF應用中,Attached屬性更多的用來控制UI的布局。除了前面的StackPanel,還有Grid等等。

補充說明:上面的代碼還有一個問題需要說明。我們設置StackPanel的字體屬性時用的是TextElement元素。為什么不用其他的元素Control、Button呢?

這個問題的關鍵之處在于Dependency屬性的注冊方法。我曾在Dependency屬性[1]做過簡單的說明。我們看看Element的FontSizeProperty屬性的注冊代碼:

  1. TextElement.FontSizeProperty = 
    DependencyProperty.RegisterAttached
    ( “FontSize”, typeof(double), 
    typeof(TextElement), new Framework
    PropertyMetadata( SystemFonts.
    MessageFontSize, FrameworkProperty
    MetadataOptions.Inherits | 
    FrameworkPropertyMetadataOptions.
    AffectsRender | FrameworkProperty
    MetadataOptions.AffectsMeasure), 
    new ValidateValueCallback(Text
    Element.IsValidFontSize)); 

這里與我們前面的IsDefault屬性類似,只是RisterAttached方法優化了WPF Attached屬性需要的屬性元數據的處理過程。

另一方面,Control的FontSize屬性是在TextElement元素已經注冊的屬性之上調用AddOwner方法,獲取一個完全相同的實例引用:

  1. Control.FontSizeProperty = 
    TextElement.FontSizeProperty.
    AddOwner( typeof(Control), new 
    FrameworkPropertyMetadata(
    SystemFonts.MessageFontSize, 
    FrameworkPropertyMetadata
    Options.Inherits)); 

所以,在實現WPF Attached屬性時我們使用的是TextElement,而不是Control等等。

責任編輯:曹凱 來源: IT168
相關推薦

2009-12-29 10:22:34

WPF附加屬性

2009-12-29 10:11:56

WPF布局屬性

2009-12-28 16:20:50

WPF內嵌樣式

2009-12-29 09:54:27

WPF文字布局

2009-12-23 15:27:34

WPF圖形系統

2009-12-28 15:18:29

WPF控件模型

2009-12-23 16:13:00

WPF Attache

2009-12-25 11:23:43

WPF命令模型

2010-02-24 16:52:59

WCF支持WebGet

2009-12-28 14:40:08

WPF屬性

2010-01-11 15:43:06

VB.NET類屬性

2009-12-23 09:26:56

ADO.NET屬性

2011-08-16 15:04:15

交換機快速啟動

2009-12-15 15:55:43

Ruby模塊

2009-12-28 17:54:49

WPF嵌入式資源

2009-12-25 16:58:23

WPF名稱范圍

2010-01-06 18:21:24

2010-02-02 16:15:38

C++變量聲明

2010-02-01 11:01:30

C++靜態構造函數

2010-01-19 15:08:18

VB.NET對象成員
點贊
收藏

51CTO技術棧公眾號

日韩精品一二三四区| 97国产精品免费视频| 欧美三日本三级少妇三99| 亚洲色图美国十次| 巨乳诱惑日韩免费av| 日韩一级成人av| 欧洲xxxxx| 亚洲精品观看| 亚洲国产精品影院| 动漫3d精品一区二区三区 | 久久午夜视频| 亚洲精品一区中文字幕乱码| ijzzijzzij亚洲大全| 二区三区精品| 亚洲超碰精品一区二区| 国产欧美一区二区三区另类精品| 男女啪啪在线观看| 国产成人亚洲精品青草天美| 欧美激情免费观看| 男人的天堂在线| 日韩精品一级中文字幕精品视频免费观看| 精品国产乱码久久久久久久| 欧美日韩在线中文| 性xxxx欧美老肥妇牲乱| 国产精品精品视频| 91九色蝌蚪嫩草| 国产精品ⅴa有声小说| 六月婷婷色综合| 日韩一级黄色av| 中文字幕一区二区三区免费视频| 亚洲经典在线| 中国人与牲禽动交精品| 中文字幕一二三区在线观看| 日本免费新一区视频| 久久久久五月天| 91涩漫在线观看| 中文字幕av一区二区三区免费看 | 男人的天堂视频在线| 在线日韩网站| 尤物九九久久国产精品的分类 | 日本在线不卡视频一二三区| 91高清免费视频| 久久久男人天堂| 午夜成人在线视频| 国产亚洲精品久久久久久久| 欧美韩国一区| 欧美激情一区二区三区久久久| 国产综合在线观看| 国产精品毛片久久久久久久| 7777在线视频| 最新日韩欧美| 国产精品久久久| 精品欧美一区二区三区在线观看 | 精品国偷自产在线视频99| 色综合久久综合网欧美综合网| 日韩视频在线一区二区三区 | 国产精品久久在线观看| 国产羞羞视频在线播放| 午夜精品在线视频一区| 国产美女主播在线播放| 久久精品主播| 亚洲bt天天射| 久久神马影院| 日韩免费在线看| 日韩精品亚洲专区在线观看| 精品国产免费久久| 如如影视在线观看经典| 中文字幕中文乱码欧美一区二区 | 婷婷六月国产精品久久不卡| 伊人免费在线| 高清电影在线免费观看| 午夜精彩视频在线观看不卡| 天天天干夜夜夜操| 久久99热狠狠色一区二区| 久久久久天天天天| 伊人久久综合| 国产精品一区二区a| 欧美成人一品| 国产福利不卡| 亚洲视频综合| 国产福利一区二区三区在线观看| 亚洲91视频| 亚洲专区中文字幕| 国产一区久久| 亚洲999一在线观看www| 免费视频亚洲| 久久中文久久字幕| 久久精品免视看国产成人| 一二美女精品欧洲| 久久亚洲精品人成综合网| 日韩av中文字幕在线| 亚洲精品555| 欧美另类xxx| 欧美女王vk| 国产精品27p| 欧美成人精品| 日韩欧美一区二区视频在线播放| 久久久久久一区二区| 欧美自拍资源在线| 激情五月婷婷综合网| 国产欧美日韩网站| 亚洲激情六月丁香| 97电影在线看视频| 欧美一区二区三区影视| 久久91视频| 国产精品 欧美在线| 亚洲国产一区二区精品专区| 亚洲欧洲精品在线观看| 91麻豆蜜桃一区二区三区| 国产剧情演绎av| 欧美三级乱人伦电影| 台湾成人免费视频| 国产成人91久久精品| 欧美天天视频| 欧美日韩视频免费| 亚洲精品高清在线| 国内在线视频| 国外成人在线直播| 99综合精品| 国产又大又黄又粗的视频| 欧美日韩在线免费视频| 亚洲国产精选| 国模精品娜娜一二三区| 久久久国产精品麻豆| 麻豆影院在线| 97香蕉超级碰碰久久免费的优势| 韩国一区二区三区在线观看| 北条麻妃av高潮尖叫在线观看| 色偷偷久久一区二区三区| 国产极品一区| 99re视频| 中文字幕一区二区三区不卡| 成人无遮挡免费网站视频在线观看| 欧美裸身视频免费观看| 欧美午夜不卡| 国产小黄视频| 日韩成人高清在线| 欧美精品1区| 午夜大尺度福利视频| 亚洲精品视频免费在线观看| 婷婷中文字幕一区| 免费国产成人av| 日韩欧美色电影| 综合视频在线| 日本黄大片一区二区三区| 欧美不卡一区二区三区四区| 成人影院在线| 三级a三级三级三级a十八发禁止| 亚洲成av人乱码色午夜| 欧美1区2区3区| 国产女主播在线| 久久综合伊人77777| 日韩福利电影在线| 欧美a在线看| 国产视频精品网| 亚洲国产精品久久不卡毛片| 亚洲丝袜啪啪| 9765激情中文在线| 国产精品久久久久久久久免费丝袜 | 国产欧美日韩精品一区| 欧美大电影免费观看| 久久精品美女| 一本高清dvd不卡在线观看| 国产精品羞羞答答在线观看| 日本男女交配视频| 亚洲激情视频网| 青青草视频一区| 在线观看的网站你懂的| 久久riav二区三区| 欧美日韩视频在线一区二区| 亚洲成人最新网站| 亚洲色图图片网| 国产精品视频久| 亚洲mv在线观看| 亚洲国产精品91| 韩国中文字幕2020精品| 99国产超薄肉色丝袜交足的后果| 亚洲午夜在线观看视频在线| 欧美老女人另类| 香蕉av在线| 国产91精品入口17c| 欧美情侣在线播放| 久久99伊人| 好了av在线| 亚洲免费av网| 中文字幕亚洲一区二区三区| 91丨porny丨最新| 精品一区二区男人吃奶| www成人免费视频| 国产精品尤物福利片在线观看| 亚洲国产精品久久久久秋霞影院 | 国产一线二线三线女| 久久精品视频在线播放| 中文字幕精品一区二区三区精品| 婷婷精品视频| 日韩av高清在线| 久久精品小视频| 亚洲制服丝袜在线| 宅男噜噜噜66一区二区| 午夜伦理福利在线|