Esistono soluzioni a questo problema per i framework UI basati su XAML precedenti (WPF/SL) ma non sono facilmente adattabili alla piattaforma Windows universale.Crea un ListBox con elementi che si espandono quando selezionato (Fisarmonica)
Sto cercando di creare un elenco di elementi che mostrano solo dettagli limitati nello stato predefinito e si espande, quando è selezionato, per modificare rapidamente alcuni dati.
Non ho trovato un modo per creare un comportamento di espansione, sebbene sia simile a ciò che fa l'applicazione Mail di Windows 10, con le conversazioni. Quando viene selezionato un messaggio di una conversazione, gli altri messaggi di quel tipo di conversazione scendono verso il basso o verso il basso.
Di seguito è riportato un esempio di un elenco in cui mi piacerebbe visualizzare solo il nome all'inizio.
<ListBox ItemsSource="{x:Bind Persons}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate x:DataType="src:Person">
<StackPanel HorizontalAlignment="Stretch" Width="Auto">
<TextBlock Text="{x:Bind Path=Name, Mode=OneWay}" Margin="12, 15, 12, 0" FontSize="18.667" />
<TextBox HorizontalAlignment="Stretch" Margin="12, 12, 12, 0" FontSize="18.667" Text="{x:Bind Path=Name, Mode=TwoWay}" />
<TextBlock Text="Date of birth" Margin="12, 15, 12, 0" />
<DatePicker Margin="12, 5, 12, 0" Date="{x:Bind Path=DateOfBirth, Mode=TwoWay}" />
<TextBlock Text="Domicile" Margin="12, 15, 12, 0" />
<TextBox Margin="12, 5, 12, 0" Text="{x:Bind Path=Domicile, Mode=OneWay}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
In WPF, tale comportamento potrebbe essere raggiunto con i trigger Style.Triggers
ma non sono più disponibili.
codice sorgente originale su GitHub
Hai ancora trigger disponibili in UWP e ci sono molti modi per farlo in puro XAML, un modo semplice e veloce che potrei pensare di fare. Crea un ItemTemplate con un ToggleButton stilizzato e un pannello sotto di esso collassato. Quindi associare la visibilità del pannello allo stato IsChecked di ToggleButton e aggiungere un convertitore Bool to Visibility, voilà, fatto. –