Heim  >  Artikel  >  Backend-Entwicklung  >  WPF-Sammlungssteuerung implementiert Trennzeichen (ItemsControl Separator)

WPF-Sammlungssteuerung implementiert Trennzeichen (ItemsControl Separator)

Y2J
Y2JOriginal
2017-04-20 10:00:592519Durchsuche

In diesem Artikel wird hauptsächlich die Implementierung des Trennzeichens „ItemsControl“ im Detail vorgestellt. Interessierte Freunde können darauf verweisen, dass in WPF-Sammlungssteuerelementen häufig ein Trennzeichen eingefügt wird Jedes Sammlungselement verfügt jedoch nicht über eine direkte Implementierung verwandter Funktionen in WPF, sodass wir nur Kurven berücksichtigen können, um das Land zu retten. Nach Recherchen habe ich wahrscheinlich über die folgenden zwei Implementierungsmethoden nachgedacht.

Schreiben Sie zunächst die Datenvorlage von

ItemsControl wie folgt:


wo der Name steht Bd Der Rand ist das Trennzeichen in der Kopfzeile jedes Elements. Unser Ziel ist es nun, das Trennzeichen zwischen den Elementen zu verbergen.
<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>

Die erste

Implementierungsmethode ist die einfachste und verwendet Sammlungselemente zum Weiterleiten von PreviousData. Dies ist eine der vier Bindungsmethoden und wahrscheinlich die, die am seltensten verwendet wird. , aber es ist zu diesem Zeitpunkt praktisch, der Code lautet wie folgt:


Verstecken Sie das Trennzeichen, wenn das vorherige Element eines Elements leer ist, eine einfache Zeile des Codes Fertig. Ein Nachteil dieser Implementierung besteht jedoch darin, dass beim Hinzufügen von Daten am Anfang der gebundenen Datenquelle mehr als ein Element ohne Trennzeichen angezeigt wird In der Mitte der Warteschlange wird kein Problem auftreten.
<DataTemplate.Triggers>
 <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}"
     Value="{x:Null}">
  <Setter TargetName="Bd" Property="Visibility" Value="Collapsed" />
 </DataTrigger>
</DataTemplate.Triggers>

Die zweite

Implementierung erfolgt mit Hilfe von ItemsControls AlternationCount und Das Attribut AlternationIndex markiert die Indexnummer für das Sammlungselement und verbirgt dann das Trennzeichen des Elements mit der Indexnummer 0. Der Code lautet wie folgt:

Code kopieren

Der Code lautet wie folgt:c3043b1fb826a64eaf306d157007bbfb


Binden Sie zuerst AlternationCount an die Count-Eigenschaft der Datenquelle auf

ItemsControl, und dann wird die AlternationIndex-Eigenschaft von ItemsControl zur Indexnummer der Sammlungsdatenquelle, schreiben Sie einfach die Logik in den Trigger:


Der Trigger bestimmt, dass die Indexnummer ausgeblendet wird, wenn sie 0 ist
<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>

Grenze , die Codemenge in dieser Methode ist nicht groß, und der Vorteil besteht darin, dass sie diese Funktion definitiv realisieren kann, unabhängig davon, ob sie am Anfang oder am Ende der Warteschlange eingefügt wird AlternationCount und AlternationIndex besteht darin, Funktionen wie das Ändern der Farbe alternativer Zeilen zu implementieren. Diese Funktion ist belegt. Wenn Ihre Sammlung also sowohl Trennzeichen als auch alternative Linienstile implementieren möchte, müssen Sie möglicherweise zusätzliche Attribute hinzufügen. Der Inhalt des Konverters ist jedoch auch sehr einfach. Sie können die vorherige Funktion wiederherstellen, indem Sie den Rest finden .

Das obige ist der detaillierte Inhalt vonWPF-Sammlungssteuerung implementiert Trennzeichen (ItemsControl Separator). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn