WPF集合控制項實作分隔符號(ItemsControl Separator)
這篇文章主要為大家詳細介紹了WPF集合控制項實作分隔符號ItemsControl Separator,具有一定的參考價值,有興趣的夥伴可以參考一下
在WPF的集合控制項中常常需要在每個集合項之間插入分隔符號樣式,但WPF的ItemsControl沒有相關功能的直接實現,所以只能考慮曲線救國,經過研究,大概想到了以下兩種實現方式。
先寫出ItemsControl的資料模板,如下:
<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就是分隔符,此時每一項的頭部都可以看見分隔符,現在我們的目標是要隱藏掉第一項的分隔符,這就達到了項與項之間才有分隔符的目的。
第一種實作方式最簡單,使用集合項目前向綁定PreviousData,這是四種綁定方式中的一種,估計也是平時用得最少的一種,不過此時就派上用場了,程式碼如下:
<DataTemplate.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}"> <Setter TargetName="Bd" Property="Visibility" Value="Collapsed" /> </DataTrigger> </DataTemplate.Triggers>
當某一項的前項為空時就隱藏分隔符,簡單的一行程式碼搞定。不過這種實作方式有個缺點就是如果使用的是Insert方式向綁定的資料來源的最前面新增資料則就會出現不只一個沒有分隔符號的項,如果是往隊尾或是隊中新增則不會出現這個問題。
第二種實作方式是藉助ItemsControl#的AlternationCount#和 AlternationIndex屬性來為集合項目標記索引號,再隱藏索引號為0的項目的分隔符,代碼如下:
##複製代碼 代碼如下:
#首先在
ItemsControl上綁定AlternationCount到資料來源的Count屬性上,然後此時ItemsControl的AlternationIndex屬性就變成的該集合資料來源的索引號碼了,在觸發器中寫上邏輯即可:
<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>
觸發器判定當索引號為0時就隱藏
Border,這種方式代碼量也不大,優點是能絕對實現這個功能,無論向隊首插入還是隊尾插入,但是AlternationCount和# AlternationIndex屬性原本的意思是用來實現像是隔行變色等功能,此時這種功能被佔用,所以如果你的集合要同時實作分隔符號和隔行樣式的功能可能需要額外加轉換器,不過轉換器內容也很簡單,求個餘數就能還原之前的功能了。
以上是WPF集合控制項實作分隔符號(ItemsControl Separator)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

您可以在 iOS 16 上選擇哪些數位格式隨著對 iOS 16.4 (beta 2) 的更改,您可以為您的 iPhone 選擇三種不同的數位格式。這些格式使用空格、逗號和句點作為分隔數字中千位的符號或作為小數點。小數點是用於將值的整數部分與其小數部分分開的字符,通常由句點 (.) 或逗號 (,) 分配。千位分隔符號用於將多位數的數字分成三組,通常由句點 (.)、逗號 (,) 或空格 ( ) 指定。在最新版本的 iOS 上,您將能夠套用以下任何一種數位格式作為 iPhone 的首選選項:1,23

WPF是微軟開發的一種基於.NET Framework的桌面應用程式開發框架。它提供了豐富的使用者介面元素、資料綁定和動畫等功能,使得開發者可以輕鬆創建高品質的桌面應用程式。

在C程式語言中,通常情況下,特殊符號具有特殊的意義,不能用於其他目的。在C編程中使用的一些特殊符號如下−[](){},;*=#讓我們了解它們的定義,如下所示:方括號[]-方括號的開閉用於數組元素引用,表示單一和多維下標。圓括號()-這些特殊符號用於函數呼叫和函數參數。花括號{}-花括號的開閉表示包含多個可執行語句的程式碼區塊的開始和結束。逗號(,)-用來分隔多個語句,例如函數呼叫中的參數分隔。冒號(:)-這是一個運算符,實際上呼叫了一個叫做初始化列表的東西。分號(;)-它被稱為語

在MacOSVentura中更改小數分隔符號和數字格式前往Apple選單並選擇“系統設定”轉到“一般”選擇“語言和地區”找到“數字格式”並下拉旁邊的子選單以存取各種數字格式選項,允許您將小數點分隔符號變更為逗號、點或空格選擇您想要的數字格式,該設定將立即貫穿整個MacOS。 MacOSVentura系統設定中缺少「數字格式」?一些使用不同區域設定的Mac用戶發現他們的MacOSVentura系統設定中缺少數位格式部分,這是一個嚴重的疏忽或一個可愛的錯誤。無論如何,如果您發現自己缺少數字格

WPF(Windows Presentation Foundation)是微軟推出的基於Windows的使用者介面框架,屬於.NET Framework 3.0的一部分。它提供了統一的程式設計模型、語言和框架,真正做到了分離介面設計人員與開發人員的工作。同時它提供了一個全新的多媒體互動使用者圖形介面。您可以使用任何一種.Net程式語言(C#,VB.NET等)進行開發。

使用Java的String.join()函數使用指定分隔符號連接字串陣列在Java程式設計中,有時我們需要將一個字串陣列連接成一個字串,並且在每個字串之間加上一個特定的分隔符號。這時候可以使用Java內建的String.join()函數來實作這個功能。 String.join()函數接受兩個參數:一個是分隔符,一個是待連接的字串陣列。它會將數組中的字串按

C#開發中如何使用WPF和WinForms進行介面設計引言:在C#開發中,介面設計是一個重要的環節。有多種介面設計工具和框架可供選擇,例如WindowsPresentationFoundation(WPF)和WindowsForms(WinForms)。本文將介紹如何使用這兩種工具進行介面設計,並提供具體的程式碼範例。希望能為開發者提供一些參考和協助。一

php伺服器腳本分隔符號有「<?php」、「<?」、「?>」、「<!--」和「//-->」等。詳細介紹:1、“<?php”,這是PHP中最常見的開始標記,用於標識PHP代碼塊的開始,在這個標記之後,可以寫入任意的PHP代碼;2、“<?”,短標記是PHP中的另一個開始標記,它比較簡潔,並且在PHP配置中可以透過設定修改,由於短標記可能會與其他語言的標記衝突,因此不建議使用等等。
