亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

WPF集合控件實現(xiàn)分隔符(ItemsControl Separator)

 更新時間:2017年04月11日 08:35:55   作者:秦晉  
這篇文章主要為大家詳細介紹了WPF集合控件實現(xiàn)分隔符ItemsControl Separator,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在WPF的集合控件中常常需要在每一個集合項之間插入一個分隔符樣式,但是WPF的ItemsControl沒有相關(guān)功能的直接實現(xiàn),所以只能考慮曲線救國,經(jīng)過研究,大概想到了以下兩種實現(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àn)在我們的目標是要隱藏掉第一項的分隔符,這就達到了項與項之間才有分隔符的目的。

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

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

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

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

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

這個小功能的代碼參見:https://github.com/fengrui358/WPFLabs/tree/master/WpfItemsControlSplitter

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用EF CORE遷移數(shù)據(jù)庫

    使用EF CORE遷移數(shù)據(jù)庫

    這篇文章介紹了使用EF CORE遷移數(shù)據(jù)庫的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • Asp.NetCore3.1開源項目升級為.Net6.0的方法實現(xiàn)

    Asp.NetCore3.1開源項目升級為.Net6.0的方法實現(xiàn)

    自從.Net6.0出來后,一直想之前開發(fā)的項目升級.Net6.0,本文就詳細的介紹一下如何將Asp.NetCore3.1開源項目升級為.Net6.0,感興趣的小伙伴們可以參考一下
    2021-12-12
  • ASP.NET?MVC使用jQuery?ui的progressbar實現(xiàn)進度條

    ASP.NET?MVC使用jQuery?ui的progressbar實現(xiàn)進度條

    這篇文章介紹了ASP.NET?MVC使用jQuery?ui的progressbar實現(xiàn)進度條的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • .NET中彈出對話框的方法匯總

    .NET中彈出對話框的方法匯總

    下面是本人對常用對話框使用的匯總,希望對大家有所幫助,同時也歡迎大家補充。
    2013-07-07
  • .NET6創(chuàng)建Windows服務(wù)的實現(xiàn)步驟

    .NET6創(chuàng)建Windows服務(wù)的實現(xiàn)步驟

    本文主要介紹了.NET6創(chuàng)建Windows服務(wù)的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • 如何利用HttpClientFactory實現(xiàn)簡單的熔斷降級

    如何利用HttpClientFactory實現(xiàn)簡單的熔斷降級

    這篇文章主要給大家介紹了關(guān)于如何利用HttpClientFactory實現(xiàn)簡單的熔斷降級的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • 用Html5與Asp.net MVC上傳多個文件的實現(xiàn)代碼

    用Html5與Asp.net MVC上傳多個文件的實現(xiàn)代碼

    Html 5 的有一些File API,對Form表單增強的特性,讓我們輕松支持多文件上傳,看下面的Html片斷代碼
    2012-08-08
  • asp.net分頁控件AspNetPager的樣式美化

    asp.net分頁控件AspNetPager的樣式美化

    自從吳旗娃推出了AspNetPager分頁控件之后,受到了廣大程序員朋友的喜愛,無數(shù)個網(wǎng)站都出現(xiàn)這個控件的身影??墒谴蟛糠志W(wǎng)站程序員的朋友都是直接套用,導(dǎo)致滿世界的分頁控件樣式都是一樣的簡潔,傷不起啊
    2011-12-12
  • .NetCore獲取Json和Xml格式的配置信息

    .NetCore獲取Json和Xml格式的配置信息

    本篇將和大家分享的是如何獲取Json和Xml格式的配置信息,主要介紹的是Configuration擴展方法的使用,對.netcore 獲取json和xml格式的配置信息的相關(guān)知識,感興趣的朋友一起看看吧
    2017-09-09
  • ASP.NET中畫圖形驗證碼的實現(xiàn)代碼

    ASP.NET中畫圖形驗證碼的實現(xiàn)代碼

    這篇文章給大家介紹了asp.net中畫圖形驗證碼的實現(xiàn)方法,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-01-01

最新評論