Maison > Article > développement back-end > Le contrôle de collection WPF implémente le séparateur (ItemsControl Separator)
Cet article présente principalement le contrôle de collection WPF pour implémenter le séparateur ItemsControl Separator en détail. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
est souvent nécessaire dans les contrôles de collection WPF. style de séparateur entre chaque élément de la collection, mais ItemsControl de WPF n'a pas d'implémentation directe des fonctions associées, nous ne pouvons donc considérer que les courbes pour sauver le pays. Après recherche, j'ai probablement pensé aux deux méthodes d'implémentation suivantes.
Écrivez d'abord le modèle de données de ItemsControl comme suit :
<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>
où le nom est Bd La bordure est le séparateur. À ce stade, le séparateur est visible dans l'en-tête de chaque élément. Notre objectif est désormais de masquer le séparateur du premier élément. Cela permet d'avoir des séparateurs entre les éléments.
La première méthode d'implémentation est la plus simple, utilisant des éléments de collection pour lier en avant les données précédentes. C'est l'une des quatre méthodes de liaison, et c'est probablement celle qui est la moins couramment utilisée. , mais c'est pratique en ce moment, le code est le suivant :
<DataTemplate.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}"> <Setter TargetName="Bd" Property="Visibility" Value="Collapsed" /> </DataTrigger> </DataTemplate.Triggers>
Masquer le séparateur lorsque la rubrique précédente d'un élément est vide, une simple ligne de code Terminé. Cependant, l'un des inconvénients de cette méthode d'implémentation est que si vous utilisez la méthode Insert pour ajouter des données au début de la source de données liée, plusieurs éléments sans séparateur apparaîtront si vous ajoutez des données à la fin de la file d'attente ou à. au milieu de la file d'attente, il n'y aura pas de Ce problème se produit.
La deuxième implémentation se fait à l'aide de ItemsControl de AlternationCount et L'attribut AlternationIndex marque le numéro d'index de l'élément de collection, puis masque le séparateur de l'élément de numéro d'index 0. Le code est le suivant :
Copier le code Le code est le suivant :
f3da48324891966b31a5fca626842682
Liez d'abord AlternationCount à la propriété Count de la source de données sur ItemsControl, puis la propriété AlternationIndex de ItemsControl devient la propriété numéro d'index de la source de données de collection, écrivez simplement la logique dans le déclencheur :
<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>
Le déclencheur détermine que lorsque le numéro d'index est 0, il sera masqué. Border , la quantité de code dans cette méthode n'est pas grande, et l'avantage est qu'elle peut certainement réaliser cette fonction, que ce soit en insérant au début ou à la fin de la file d'attente, mais AlternationCount et AlternationIndex est d'implémenter des fonctions telles que changer la couleur des lignes alternatives à ce stade, cette fonction est occupée, donc si votre collection souhaite implémenter à la fois des styles de séparateur et des styles de ligne alternatifs, vous devrez peut-être ajouter des attributs supplémentaires, mais le contenu du convertisseur est également très simple. Vous pouvez restaurer la fonction précédente en trouvant le reste. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!