欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

SilverlightItemsControl詳細(xì)解析+解惑

Silverlight最強(qiáng)大的地方就在于定義控件了,Silverlight提供了非常靈活和高效的控件定義方式,幾乎可以實(shí)現(xiàn)任何復(fù)雜的控件實(shí)現(xiàn),對于快速開發(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í)。希望通過本文能夠讓所有還對ItemsControl有困惑的開發(fā)者,能夠更清晰的認(rèn)識ItemsControl

那些困惑

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

ItemsControl剖析

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

  • IsItemItsOwnContainerOverride,ItemsControl會(huì)遍歷Items集合,對每個(gè)item調(diào)用該方法(注:對于設(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對象
  • 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使用的資源,可以在這里解注冊ItemContainer注冊的事件等操作

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

新聞名稱:SilverlightItemsControl詳細(xì)解析+解惑
當(dāng)前鏈接:http://chinadenli.net/article8/ppgoop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、ChatGPT、、用戶體驗(yàn)、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)