Erstellen Sie eine Tabelle mit Silverlight für Windows Phone 7
Ich würde gerne eine Tabelle erstellen, die auf WP7. Das ist mein Aktueller Ansatz, eine ListBox mit einer Tabelle wie die Daten-Vorlage.
<ListBox x:Name="ResultsList" Margin="12,0" Grid.Row="1">
<ListBox.Resources>
<DataTemplate x:Key="ResultsListItem">
<Grid d:DesignWidth="385" Height="28">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="88"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="textBlock1" Margin="0,0,24,0"/>
<TextBlock x:Name="textBlock2" Margin="0,0,24,0"
VerticalAlignment="Top" Grid.Column="1"/>
<TextBlock x:Name="textBlock3" Margin="0,0,24,0"
VerticalAlignment="Top" Grid.Column="3"/>
</Grid>
</DataTemplate>
</ListBox.Resources>
<ListBox.ItemTemplate>
<StaticResource ResourceKey="ResultsListItem"/>
</ListBox.ItemTemplate>
</ListBox>
Das problem ist, dass die resultierende Tabelle die Spalten sind nicht Größe gleichermaßen. Die Raster-Spalte-Definitionen angewendet werden, um jede Zeile unabhängig von den anderen Zeilen. Das bedeutet, dass, wenn es einen langen text in textBlock1, Spalte 0 wird größer. In der nächsten Zeile, es könnte ein kürzerer text in textBlock1, was in Spalte 0 auch kürzer als die Spalte 0 in der letzten Zeile.
Wie können die Spalten in allen Zeilen der Größe gleich? Ich will keine Feste Breite, da, wenn sich die Ausrichtung ändert sich von Porträt zu Landschaft die Spalten würde die Größe automatisch.
Gibt es die HeaderedItemsControl, aber wie ich es verstehe, es ist nicht verfügbar für Windows Phone 7?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein heikles problem! In WPF gibt es das Konzept eines SharedSizeGroup, die ermöglicht die Freigabe von Spaltenbreiten über mehrere Netze, aber dies ist die in silverlight nicht verfügbar.
Gibt es ein paar workarounds im web:
http://www.scottlogic.co.uk/blog/colin/2010/11/using-a-grid-as-the-panel-for-an-itemscontrol/
http://databaseconsultinggroup.com/blog/2009/05/simulating_sharedsizegroup_in.html
Obwohl weder sind die einfachen Lösungen.
Können Sie auch versuchen, Mikes AutoGrid:
http://whydoidoit.com/2010/10/06/automatic-grid-layout-for-silverlight/
Hier ist meine Lösung mit SharedSizeGroup wie vorgeschlagen von ColinE.
Sogar das maximum mit jeder Spalte können gesteuert werden über das TextBlock-die MaxWidth-Eigenschaft. Die SharedSizeGroups sicherstellen, dass die Textblöcke die gleiche Größe in jeder Zeile.
Können Sie
WrapPanel
. Legen Sie die folgendenItemsPanel
imDatatemple
können Sie nur haben textblock.