日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SilverlightItemsControl詳細(xì)解析+解惑

Silverlight最強(qiáng)大的地方就在于定義控件了,Silverlight提供了非常靈活和高效的控件定義方式,幾乎可以實(shí)現(xiàn)任何復(fù)雜的控件實(shí)現(xiàn),對(duì)于快速開發(fā)應(yīng)用程序有著重要的意義。在Silverlight中一般將控件分為兩大類:

目前創(chuàng)新互聯(lián)已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、上思網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

  • 非ItemsControl,像TextBox、Button等,表示單一的一個(gè)控件,這樣的控件大部分開發(fā)者都可以很好的理解和掌握
  • ItemsControl,像ListBox、ComboBox、TreeView等,用來承載多個(gè)控件,這樣的控件給很多開發(fā)者帶來困惑,不是很好理解,尤其是在定義ItemsControl控件時(shí)。希望通過本文能夠讓所有還對(duì)ItemsControl有困惑的開發(fā)者,能夠更清晰的認(rèn)識(shí)ItemsControl

那些困惑

  • 現(xiàn)在有如下的需求:我想添加如下的一個(gè)集合控件,期望選中項(xiàng)出現(xiàn)三角箭頭的提示,應(yīng)該是在DataTemplate中定義,還是在ListBoxItem中Template定義?
    Silverlight ItemsControl詳細(xì)解析+解惑
  • 下面的代碼是如何實(shí)現(xiàn)多級(jí)數(shù)據(jù)綁定的,明明只使用了一級(jí)的DataTemplate?
    
        
            
        
    

ItemsControl剖析

這里著重介紹其中幾個(gè)關(guān)鍵方法,透徹理解這些方法是使用和定義ItemsControl的關(guān)鍵:

  • IsItemItsOwnContainerOverride,ItemsControl會(huì)遍歷Items集合,對(duì)每個(gè)item調(diào)用該方法(注:對(duì)于設(shè)置ItemsSource的話,最終都會(huì)將ItemsSource中的每一項(xiàng)都添加到Items集合中),如果item類型和ItemsControl的每個(gè)Item的Container類型不匹配,返回false,否則返回true,如果要實(shí)現(xiàn)自定義的集合控件,這里就是該集合控件需要的ItemContainer類型。下圖是ListBox中該方法的實(shí)現(xiàn):
     Silverlight ItemsControl詳細(xì)解析+解惑
  • GetContainerForItemOverride,如果IsItemItsOwnContainerOverride返回false,就執(zhí)行該方法,這個(gè)方法主要是為ItemsControl的每個(gè)Item返回一個(gè)ItemContainer對(duì)象
  • PrepareContainerForItemOverride,這個(gè)方法在準(zhǔn)備顯示每個(gè)Item之前做的一系列的準(zhǔn)備工作,最主要的操作包括:
    1. 就是設(shè)置每個(gè)ItemContainer的ContentTemplate,這里也說明ItemContainer一般都為ContentControl,否則ItemsControl的ItemTemplate設(shè)置就沒有任何意義
    2. 如果ItemsControl設(shè)置了DisplayMemberPath的話,ItemsControl就生成一個(gè)DisplayMemberTemplate的內(nèi)部類,這個(gè)類本質(zhì)上是一個(gè)DataTemplate,從DataTemplate繼承,其使用TextBlock綁定DisplayMemberPath指定的屬性路徑
    3. 使用ItemsControl的ItemContainerStyle設(shè)置了ItemContainer的Style

關(guān)于這個(gè)方法需要說明的幾點(diǎn)是:

      1. ItemTemplate和DisplayMemberPath不能同時(shí)設(shè)置,否則會(huì)拋出異常
      2. 如果自定義的ItemsControl在顯示Item時(shí)出現(xiàn)問題的話,就檢查是否正確的重寫了該方法,比如是否覆蓋了base的實(shí)現(xiàn),而且還沒有正確設(shè)置ItemTemplate、ItemContainer這些屬性
  • ClearContainerForItemOverride,這個(gè)方法在ItemsControl中Item被從界面顯式中移除時(shí)執(zhí)行,用來清理ItemContainer使用的資源,可以在這里解注冊(cè)ItemContainer注冊(cè)的事件等操作

未完待續(xù)…………………


文章標(biāo)題:SilverlightItemsControl詳細(xì)解析+解惑
URL地址:http://www.dlmjj.cn/article/ppgoop.html