Dati vincolanti a una raccolta con comportamento diverso per l'ultimo elemento
-
20-12-2019 - |
Domanda
Sembra che sarebbe un problema comune, ma il mio Google-Fu mi ha lasciato vuoto.Ci scusiamo se questo è stato chiesto mille volte prima!
Ho una collezione, dì un ObservableCollection<Athlete>
.Voglio mostrare quella raccolta sullo schermo in modo che sia simile a qualcosa come:
[Jersey Pic] |[Jersey Pic] |[Jersey Pic] |[Jersey Pic]
La chiave in questo esempio escogitato è la piccola barra, tra ogni immagine.Sottrarre quella barra ed è solo un ListBox
legato alla collezione, con un ItemsPanelTemplate
di un StackPanel
orizzontale, e quindi un ItemTemplate
per mostrare l'immagine di Jersey corrispondente per ogni elemento.Nessun problema!
La domanda è quindi, come aggiungere la barra, che potrebbe essere qualsiasi elemento grafico, dopo tutto tranne l'ultimo elemento nella collezione?
Grazie!
Soluzione
Come suggerito nel link da @kornuffin, è possibile inserire la barra nel lato sinistro della scheda Listino:
|[Jersey Pic] |[Jersey Pic] |[Jersey Pic] |[Jersey Pic]
Quindi utilizzare DataTrigger
con rilegatura {RelativeSource PreviousData}
, per nascondere la prima barra se i dati precedenti sono null.Ad esempio, supponiamo che sto usando Separator
per visualizzare la barra, posso aggiungere questo stile al controllo del separatore per nascondere il primo separatore:
<Separator.Style>
<Style TargetType="Separator">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Separator.Style>
.