WinRT WP8.1 ListView mit Gruppe und anderem ItemsPanel
Hallo, ich bin es mal wieder :D
ich hab schon wieder eine Frage, die ich mir mit Hilfe von google nicht beantworten konnte.
Ich habe eine ListView, an die ich eine CollectionViewSource binde, um eine Gruppierung vornehmen zu können. Jetzt ist es so, dass ich das DataTemplate für die Items geändert habe und dieses DataTemplate es zulässt, dass ich die Inhalte ähnlich wie bei der GridView sowohl horizontal als auch vertikal anzeigen kann (Scrollrichtung bleibt, die Items sind nur nebeneinander dargestellt)
Um dies zu erreichen, wollte ich das ItemsPanel der ListView auf ein WrapGrid festlegen, so wie ich es schon auf einer anderen Page meiner App mache.
Das Problem: Die ListView ignoriert das andere ItemsPanel bzw. wendet es auf die Gruppen an, wie ich im MSDN lesen konnte. Dies ist natürlich nicht mein Ziel, denn ich brauche die Gruppen, so dass eine Abschaltung nicht möglich ist und das WrapGrid soll sich ja auf die Items auswirken.
Suchen im Internet brachte keinen Erfolg, daher frage ich hier, ob vielleicht jemand eine Lösung kennt, denn es muss ja möglich sein, die Items anders zu arrangieren.
Hoffe, es kann mir jemand helfen.
AW: WinRT WP8.1 ListView mit Gruppe und anderem ItemsPanel
Hi,
ich hab es jetzt mehrfach gelesen konnte aber im Kopf nicht genau nachvollziehen was du machen willst. Könntest du evtl. ein Bild dazu liefern?
Evtl. stehst du aber auch vor dem selben Problem vor dem ich auch mal stand als ich eine App für Windows 8 entwickelt habe. Schau dir mal bitte die Screenshots von meiner App an: http://apps.microsoft.com/windows/de...3-b85a271024b4
Dort habe ich gruppierte Elemente in einem Wrappanel, das sich vertikal ausbreitet. Ist das so ähnlich wie du es haben willst?
AW: WinRT WP8.1 ListView mit Gruppe und anderem ItemsPanel
Genau, das ist so ähnlich. Im Grunde möchte ich noch das Verhalten der ListView haben, d.h. alles breitet sich nach unten hin aus, zumindest was die Gruppen angeht. Die einzelnen Items, die in der jeweiligen Gruppe sind, die sollen sich dann mit Hilfe des Wrapgrid schön verteilen, d.h. nicht nur stur nach unten hin sondern auch zur Seite, solange die Elemente halt hinpassen (bspw. passen 3 Elemente auf eine Zeile, danach wird umgebrochen auf die nächste Zeile, was ja einem WrapGrid mit Orientation Horizontal entspricht)
Mein Problem dabei ist halt, dass die ListView das ItemsPanel anscheinend nur auf die Gruppen anwendet statt auf die Items selbst, wie der Name vermuten lassen würde.
AW: WinRT WP8.1 ListView mit Gruppe und anderem ItemsPanel
Ja das hört sich ziemlich ähnlich an.
Ich bin leider am falschen PC und habe keinen Zugriff auf meinen Source, werden dir aber spätesten heute Abend die XAML zur Verfügung stellen.
---------- Hinzugefügt um 14:04 ---------- Vorheriger Beitrag war um 11:13 ----------
Hier mal mein XAML. Ich hoffe das hilft weiter.
Wenn noch Fragen sind einfach her damit.
<ScrollViewer x:Name="scrollGamesGroup" Grid.Column="1" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Visible">
<GridView Grid.Column="1" ItemsSource="{Binding GamesGroup}" SelectionMode="None" x:Name="gvGamesGroup" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled">
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Top" />
</Style>
</GridView.ItemContainerStyle>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate>
<!--<toolkit:WrapPanel Orientation="Vertical" VerticalAlignment="Top" >-->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border Width="99" HorizontalAlignment="Left" x:Name="charItem" Tapped="charItem_Tapped"
Height="99"
Margin="6"
Background="{StaticResource MMGGamesColor}">
<TextBlock FontSize="40"
FontWeight="Bold"
Foreground="Black"
Text="{Binding Title}" />
</Border>
<GridView Grid.Row="1" ItemsSource="{Binding Items}" SelectionMode="None" x:Name="gvGames" >
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</GridView.ItemContainerStyle>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate>
<Grid x:Name="daGrid" Width="400" Tapped="daGrid_Tapped"
Margin="1"
Background="{StaticResource MMGGray}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Rectangle Width="10" Fill="{StaticResource MMGGamesColor}" />
<Grid Grid.Column="1" Margin="6">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock FontSize="30"
Foreground="White"
Text="{Binding Name}"
TextWrapping="Wrap" />
<TextBlock Grid.Row="1"
FontSize="20"
Foreground="White"
Text="{Binding Notiz}"
TextWrapping="Wrap" />
</Grid>
<StackPanel Grid.Column="2" Orientation="Horizontal">
<Image Width="50"
Margin="2"
Source="{Binding KonsoleImage}" />
<Image Width="50"
Margin="2"
Source="{Binding DownloadImage}" />
</StackPanel>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</ScrollViewer>
AW: WinRT WP8.1 ListView mit Gruppe und anderem ItemsPanel
Erst einmal vielen Dank für dein XAML, auf die Idee, eine doppelte List/GridView zu verwenden, wäre ich wohl eher nicht gekommen.
Leider gibts dennoch noch ein Problem: Ich verwende eine CollectionViewSource, um die Gruppierungen vorzunehmen, du scheinst in deinem XAML aber direkt die Gruppe(n) zu binden ohne CVS. Aufgrund der CVS kann ich nun aber mein Vorhaben nicht korrekt umsetzen (äußere ListView = Gruppen, als Items hätte ich jeweils pro Gruppe dann deren Items, aber nochmals gekapselt in einer ListView)
Um etwas zu konkretisieren, was ich vorhabe: Ich will praktisch eine Darstellung wie in der Foto-App von WP8.1 erreichen, da sind die Fotos ja auch gruppiert und gleichzeitig aber eben den Platz am Ausfüllen. Genau das ist mein Ziel, allerdings scheitert es noch unerklärlicherweise, weil ich ja das ItemsPanelTemplate nicht nutzen kann, um eben die Darstellung der Items zu beeinflussen
AW: WinRT WP8.1 ListView mit Gruppe und anderem ItemsPanel
Hi,
ja ich hab eine Klasse "Group" in die ich die einzelnen Items packe:
public class Group<T> : IEnumerable<T>
{
public Group(string name, IEnumerable<T> items)
{
this.Title = name;
this.Items = new List<T>(items);
}
public override bool Equals(object obj)
{
Group<T> that = obj as Group<T>;
return (that != null) && (this.Title.Equals(that.Title));
}
public string Title
{
get;
set;
}
public IList<T> Items
{
get;
set;
}
#region IEnumerable<T> Members
public IEnumerator<T> GetEnumerator()
{
return this.Items.GetEnumerator();
}
#endregion
#region IEnumerable Members
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return this.Items.GetEnumerator();
}
#endregion
}
Ich kann mich erinnern, dass ich damals mehrere Tagen nach einer Lösung gesucht habe und das was das Beste was ich finden konnte.
AW: WinRT WP8.1 ListView mit Gruppe und anderem ItemsPanel
So, ich hab jetzt mal die CollectionViewSource gestrichen und stattdessen direkt meine Elemente gebunden (meine Gruppen-Klasse sieht ähnlich aus wie deine, von daher war das recht einfach). Es sieht nun so aus, wie ich es gerne hätte, auch wenn ich noch etwas am Template usw feilen muss, weil es doch noch paar Problemchen gibt.
Jedenfalls, danke für die freundliche Hilfe, auf diese Idee wäre ich wohl eher nie gekommen
AW: WinRT WP8.1 ListView mit Gruppe und anderem ItemsPanel
Schön das ich helfen konnte.
Mit der kostenlosen
PocketPC.ch App von meinem RM-821_eu_euro2_248 aus geschrieben.