Ich habe Google untersucht, UWP-Samples ausgecheckt, konnte aber keine Lösung für dieses Problem finden. Grundsätzlich möchte ich eine Listenansicht mit automatisch skalierenden Rasterspalten. Zum Beispiel haben Sie Groove Music Songs View. Ich möchte ein solches Verhalten implementieren.UWP ListView mit reaktiven Spalten
Wenn Sie die Größe von Groove ändern, passt sich der Listenansicht an die Größe an, indem die Spalten erweitert, kontrahiert oder ausgeblendet werden. Ich kann den versteckten Teil mit VisualStates und AdaptiveTrigger handhaben, aber ich kann nicht herausfinden, wie man mit der Ausdehnung/Kontraktion des Gitters umgeht.
Eine andere Sache zu beachten ist, dass die Elemente alle einheitlich mit der gleichen Breite für jede TextBox sind. Sie erscheinen nicht unscharf und ohne Muster, wenn der Name eines Liedes durch Zufall länger als üblich ist.
Ich habe diese Datatemplate:
<DataTemplate x:Key="MediafileUnselectedTemplate">
<Grid Height="50">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="titleTxt" Grid.Column="0" Width="400" TextWrapping="NoWrap" TextTrimming="Clip" Text="{Binding Title}" VerticalAlignment="Center"/>
<TextBlock x:Name="artistTxt" Grid.Column="1" Width="200" Visibility="Visible" Margin="15,0,0,0" FontSize="13" Text="{Binding LeadArtist}" VerticalAlignment="Center"/>
<TextBlock x:Name="albumTxt" Grid.Column="2" Width="200" Visibility="Visible" Margin="15,0,0,0" FontSize="13" Text="{Binding Album}" VerticalAlignment="Center"/>
<TextBlock x:Name="yearTxt" Grid.Column="3" Width="100" Visibility="Visible" Margin="15,0,0,0" FontSize="13" Text="{Binding Year}" VerticalAlignment="Center"/>
<TextBlock x:Name="genreTxt" Grid.Column="4" Visibility="Visible" Margin="15,0,0,0" FontSize="13" Text="{Binding Genre}" VerticalAlignment="Center"/>
<TextBlock x:Name="durationTxt" Grid.Column="5" Visibility="Visible" Margin="15,0,0,0" FontSize="13" Text="{Binding Length}" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
Was ich verwalten kann: ich MinWidths
einstellen oder einfach nur Widths
sie alle einheitlich zu setzen, aber dann verlieren sie ihre Anpassungsfähigkeit und die Größe einfach nicht nach der Seite.
Jede Hilfe wird geschätzt! Vielen Dank im Voraus!
Settinng die Column zu " * "macht alle Spalten gleich groß, wenn die Titelspalte größer sein soll. – thecodrr
Dies funktioniert überhaupt nicht. Im Gegenteil, es bricht das Muster und jede Textbox hat ihre eigene Breite und Position. – thecodrr
Es hängt davon ab, was Sie erreichen möchten. Entweder haben alle Spalten die gleiche Breite, unabhängig vom Inhalt. Verwenden Sie in diesem Fall "*". Oder Sie möchten immer versuchen, den gesamten Inhalt anzuzeigen, in diesem Fall verwenden Sie "Auto". Wenn Sie die Breite des TextBlocks manuell festlegen, wird die Breite beibehalten und die Größenänderung hat keine Auswirkungen darauf. Wenn Sie jedoch möchten, dass Ihre Titelspalte mehr Platz benötigt, aber immer noch die Größe ändert, verwenden Sie zum Beispiel "4 *". Es dauert nur 4 mal die Breite der Spalten, die Sie mit "*" definiert haben. – marayfirth