成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

WPF集合控件如何實(shí)現(xiàn)分隔符-創(chuàng)新互聯(lián)

本篇文章為大家展示了WPF集合控件如何實(shí)現(xiàn)分隔符,代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)是一家成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,提供網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,按需網(wǎng)站建設(shè),網(wǎng)站開發(fā)公司,從2013年開始是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開發(fā),后臺程序制作以及后期項(xiàng)目運(yùn)營并提出專業(yè)建議和思路。

這篇文章主要為大家詳細(xì)介紹了WPF集合控件實(shí)現(xiàn)分隔符ItemsControl Separator,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在WPF的集合控件中常常需要在每一個集合項(xiàng)之間插入一個分隔符樣式,但是WPF的ItemsControl沒有相關(guān)功能的直接實(shí)現(xiàn),所以只能考慮曲線救國,經(jīng)過研究,大概想到了以下兩種實(shí)現(xiàn)方式。

先寫出ItemsControl的數(shù)據(jù)模板,如下:

<ItemsControl ItemsSource="{Binding Source}" BorderThickness="1" BorderBrush="Blue" VerticalAlignment="Stretch">
 <ItemsControl.ItemTemplate>
  <DataTemplate>
   <Grid>
    <Grid.RowDefinitions>
     <RowDefinition Height="Auto" />
     <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Border Name="Bd" Grid.Row="0" Height="1" Background="Red" />
    <TextBlock Grid.Row="1" Text="{Binding}" />
   </Grid>
  </DataTemplate>
 </ItemsControl.ItemTemplate>
</ItemsControl>

其中名為Bd的Border就是分隔符,此時每一項(xiàng)的頭部都可以看見分隔符,現(xiàn)在我們的目標(biāo)是要隱藏掉第一項(xiàng)的分隔符,這就達(dá)到了項(xiàng)與項(xiàng)之間才有分隔符的目的。

第一種實(shí)現(xiàn)方式最簡單,使用集合項(xiàng)前向綁定PreviousData,這是四種綁定方式中的一種,估計(jì)也是平時用得最少的一種,不過此時就派上用場了,代碼如下:

<DataTemplate.Triggers>
 <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}"
     Value="{x:Null}">
  <Setter TargetName="Bd" Property="Visibility" Value="Collapsed" />
 </DataTrigger>
</DataTemplate.Triggers>

當(dāng)某一項(xiàng)的前項(xiàng)為空時就隱藏分隔符,簡單的一行代碼搞定。不過這種實(shí)現(xiàn)方式有個缺點(diǎn)就是如果使用的是Insert方式向綁定的數(shù)據(jù)源的最前面添加數(shù)據(jù)則就會出現(xiàn)不止一個沒有分隔符的項(xiàng),如果是往隊(duì)尾或者隊(duì)中添加則不會出現(xiàn)這個問題。

第二種實(shí)現(xiàn)方式是借助ItemsControlAlternationCountAlternationIndex屬性來為集合項(xiàng)標(biāo)記索引號,再隱藏索引號為0的項(xiàng)的分隔符,代碼如下:

復(fù)制代碼 代碼如下:

<ItemsControl ItemsSource="{Binding Source}" BorderThickness="1" BorderBrush="Blue"
             VerticalAlignment="Stretch" AlternationCount="{Binding Source.Count}">

首先在ItemsControl上綁定AlternationCount到數(shù)據(jù)源的Count屬性上,然后此時ItemsControl的AlternationIndex屬性就變成的該集合數(shù)據(jù)源的索引號了,在觸發(fā)器中寫上邏輯即可:

<Border Name="Bd" Grid.Row="0" Height="1" Background="Red">
 <Border.Style>
  <Style TargetType="{x:Type Border}">
   <Style.Triggers>
    <DataTrigger
     Binding="{Binding Path=(ItemsControl.AlternationIndex), 
   RelativeSource={RelativeSource AncestorType={x:Type ContentPresenter}}}"
     Value="0">
     <Setter Property="Visibility" Value="Collapsed" />
    </DataTrigger>
   </Style.Triggers>
  </Style>
 </Border.Style>
</Border>

觸發(fā)器判定當(dāng)索引號為0時就隱藏Border,這種方式代碼量也不大,優(yōu)點(diǎn)是能絕對實(shí)現(xiàn)這個功能,無論向隊(duì)首插入還是隊(duì)尾插入,但是AlternationCountAlternationIndex屬性本來的含義是用來實(shí)現(xiàn)比如隔行變色等功能,此時這種功能被占用,所以如果你的集合要同時實(shí)現(xiàn)分隔符和隔行樣式的功能可能需要額外加轉(zhuǎn)換器,不過轉(zhuǎn)換器內(nèi)容也很簡單,求個余數(shù)就能還原之前的功能了。

上述內(nèi)容就是WPF集合控件如何實(shí)現(xiàn)分隔符,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前文章:WPF集合控件如何實(shí)現(xiàn)分隔符-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://jinyejixie.com/article42/icjec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、小程序開發(fā)網(wǎng)站導(dǎo)航、Google、定制網(wǎng)站、定制開發(fā)

廣告

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

網(wǎng)站優(yōu)化排名
平安县| 井研县| 凤凰县| 曲沃县| 汤阴县| 鹤岗市| 淮南市| 宝丰县| 福清市| 建瓯市| 兴国县| 明光市| 东阳市| 邢台县| 丘北县| 江油市| 金堂县| 当阳市| 黑河市| 千阳县| 东兰县| 凤山市| 光山县| 大厂| 浪卡子县| 澄江县| 遵化市| 镇江市| 江门市| 凤冈县| 江孜县| 平安县| 客服| 涟水县| 玛多县| 稷山县| 邹平县| 紫金县| 连州市| 邵东县| 莱阳市|