Rumah pembangunan bahagian belakang Tutorial C#.Net WPF集合控件实现分隔符(ItemsControl Separator)

WPF集合控件实现分隔符(ItemsControl Separator)

Apr 20, 2017 am 10:00 AM
wpf

这篇文章主要为大家详细介绍了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>
Salin selepas log masuk

其中名为Bd的Border就是分隔符,此时每一项的头部都可以看见分隔符,现在我们的目标是要隐藏掉第一项的分隔符,这就达到了项与项之间才有分隔符的目的。

第一种实现方式最简单,使用集合项前向绑定PreviousData,这是四种绑定方式中的一种,估计也是平时用得最少的一种,不过此时就派上用场了,代码如下:


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

当某一项的前项为空时就隐藏分隔符,简单的一行代码搞定。不过这种实现方式有个缺点就是如果使用的是Insert方式向绑定的数据源的最前面添加数据则就会出现不止一个没有分隔符的项,如果是往队尾或者队中添加则不会出现这个问题。

第二种实现方式是借助ItemsControlAlternationCountAlternationIndex属性来为集合项标记索引号,再隐藏索引号为0的项的分隔符,代码如下:

复制代码 代码如下:

VerticalAlignment="Stretch" AlternationCount="{Binding Source.Count}">

首先在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>
Salin selepas log masuk

触发器判定当索引号为0时就隐藏Border,这种方式代码量也不大,优点是能绝对实现这个功能,无论向队首插入还是队尾插入,但是AlternationCountAlternationIndex属性本来的含义是用来实现比如隔行变色等功能,此时这种功能被占用,所以如果你的集合要同时实现分隔符和隔行样式的功能可能需要额外加转换器,不过转换器内容也很简单,求个余数就能还原之前的功能了。

Atas ialah kandungan terperinci WPF集合控件实现分隔符(ItemsControl Separator). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menukar format nombor pada iPhone Bagaimana untuk menukar format nombor pada iPhone Apr 13, 2023 pm 06:16 PM

Format nombor yang boleh anda pilih pada iOS 16 Dengan perubahan pada iOS 16.4 (beta 2), anda boleh memilih daripada tiga format nombor berbeza untuk iPhone anda. Format ini menggunakan ruang, koma dan noktah sebagai simbol yang memisahkan ribuan digit dalam nombor atau sebagai titik perpuluhan. Titik perpuluhan ialah aksara yang digunakan untuk memisahkan bahagian integer sesuatu nilai daripada bahagian pecahannya, biasanya ditetapkan dengan noktah (.) atau koma (,). Pemisah seribu digunakan untuk memisahkan nombor berbilang digit kepada tiga kumpulan, biasanya ditentukan oleh noktah (.), koma (,), atau ruang ( ). Pada versi iOS terkini, anda boleh menggunakan mana-mana format nombor berikut sebagai pilihan pilihan iPhone anda: 1,23

Tutorial WPF dari kemasukan ke kemahiran Tutorial WPF dari kemasukan ke kemahiran Oct 27, 2023 am 09:45 AM

WPF ialah rangka kerja pembangunan aplikasi desktop berdasarkan Rangka Kerja .NET yang dibangunkan oleh Microsoft. Ia menyediakan elemen antara muka pengguna yang kaya, pengikatan data, animasi dan fungsi lain, membolehkan pembangun membuat aplikasi desktop berkualiti tinggi dengan mudah.

Apakah simbol istimewa dalam bahasa C? Apakah simbol istimewa dalam bahasa C? Aug 26, 2023 pm 01:41 PM

Dalam bahasa pengaturcaraan C, lazimnya, simbol khas mempunyai makna khas dan tidak boleh digunakan untuk tujuan lain. Beberapa simbol khas yang digunakan dalam pengaturcaraan C adalah seperti berikut −[](){},;*=# Mari kita fahami takrifnya seperti berikut: Tanda kurung segi empat sama []-Pembukaan dan penutup kurungan segi empat sama digunakan untuk rujukan elemen tatasusunan, menunjukkan Subskrip tunggal dan multidimensi. Tanda kurung () - Simbol khas ini digunakan untuk panggilan fungsi dan parameter fungsi. Pendakap kerinting {} - Pendakap kerinting membuka dan menutup menunjukkan permulaan dan penghujung blok kod yang mengandungi berbilang penyataan boleh laku. Koma (,) - digunakan untuk memisahkan berbilang pernyataan, seperti pemisahan parameter dalam panggilan fungsi. Kolon (:) - Ini ialah pengendali yang sebenarnya memanggil sesuatu yang dipanggil senarai permulaan. Titik koma (;) - ia dipanggil slanga

Apakah rangka kerja bahasa wpf? Apakah rangka kerja bahasa wpf? Oct 27, 2023 am 11:28 AM

WPF (Windows Presentation Foundation) ialah rangka kerja antara muka pengguna berasaskan Windows yang dilancarkan oleh Microsoft dan merupakan sebahagian daripada .NET Framework 3.0. Ia menyediakan model pengaturcaraan bersatu, bahasa dan rangka kerja, benar-benar memisahkan kerja pereka antara muka dan pembangun. Pada masa yang sama, ia menyediakan antara muka grafik pengguna interaktif multimedia baharu. Anda boleh membangunkan menggunakan mana-mana bahasa pengaturcaraan .Net (C#, VB.NET, dll.).

Bagaimana untuk menukar pemisah perpuluhan daripada koma kepada titik dalam MacOS Ventura Bagaimana untuk menukar pemisah perpuluhan daripada koma kepada titik dalam MacOS Ventura Apr 15, 2023 pm 12:43 PM

Tukar pemisah perpuluhan dan format nombor dalam MacOS Ventura Pergi ke menu  Apple dan pilih "Tetapan Sistem" Pergi ke "Umum" Pilih "Bahasa & Wilayah" Cari "Format Nombor" dan tarik ke bawah submenu di sebelahnya untuk mengakses pelbagai pilihan format nombor , membolehkan anda menukar pemisah perpuluhan kepada koma, titik atau ruang untuk memilih format nombor yang anda inginkan, dan tetapan akan digunakan serta-merta di seluruh MacOS. "Format nombor" tiada dalam tetapan sistem MacOS Ventura? Sesetengah pengguna Mac yang menggunakan tempat yang berbeza telah mendapati bahawa bahagian pemformatan nombor tiada daripada tetapan sistem MacOS Ventura mereka, sama ada sebagai pengawasan kritikal atau sebagai pepijat comel. Bagaimanapun, jika anda mendapati diri anda kehilangan grid nombor

Cara menggunakan WPF dan WinForms untuk reka bentuk antara muka dalam pembangunan C# Cara menggunakan WPF dan WinForms untuk reka bentuk antara muka dalam pembangunan C# Oct 08, 2023 pm 03:58 PM

Cara menggunakan WPF dan WinForms untuk reka bentuk antara muka dalam pembangunan C# Pengenalan: Dalam pembangunan C#, reka bentuk antara muka ialah pautan penting. Terdapat pelbagai alatan dan rangka kerja reka bentuk antara muka untuk dipilih, seperti Windows Presentation Foundation (WPF) dan Windows Forms (WinForms). Artikel ini akan memperkenalkan cara menggunakan kedua-dua alatan ini untuk reka bentuk antara muka dan menyediakan contoh kod khusus. Semoga ia dapat memberikan sedikit rujukan dan bantuan untuk pembangun. satu

Bagaimana untuk memisahkan rentetan berdasarkan pembatas tertentu menggunakan kaedah split() kelas String Bagaimana untuk memisahkan rentetan berdasarkan pembatas tertentu menggunakan kaedah split() kelas String Jul 24, 2023 pm 09:32 PM

Cara menggunakan kaedah split() kelas String untuk memisahkan rentetan berdasarkan pembatas tertentu Gambaran Keseluruhan: Dalam bahasa pengaturcaraan Java, kelas String ialah kelas yang sangat penting dan biasa digunakan. Kelas String menyediakan banyak kaedah praktikal, antaranya kaedah split() digunakan untuk memisahkan rentetan. Kaedah split() membahagikan rentetan kepada berbilang subrentetan berdasarkan pembatas yang ditentukan dan menyimpan subrentetan ini dalam tatasusunan rentetan. Artikel ini akan memperkenalkan cara menggunakan split kelas String

Apakah pembatas dalam skrip pelayan php? Apakah pembatas dalam skrip pelayan php? Sep 18, 2023 pm 01:58 PM

Pembatas skrip pelayan PHP termasuk "<?php", "<?", "?>", "<!--" dan "//-->". Pengenalan terperinci: 1. "<?php", yang merupakan teg permulaan yang paling biasa dalam PHP, digunakan untuk mengenal pasti permulaan blok kod PHP Selepas teg ini, mana-mana kod PHP boleh ditulis 2. "<?" Teg pendek ialah satu lagi jenis teg permulaan dalam PHP Ia agak ringkas dan boleh diubah suai melalui tetapan dalam fail konfigurasi PHP Memandangkan tag pendek mungkin bercanggah dengan teg dalam bahasa lain, penggunaannya tidak disyorkan dan sebagainya.

See all articles