2012-08-12 9 views
7

Ich suche nach Tabellendaten (TV-Kanäle), aber mit Optionen wie DataGrid/UniformGrid/Table mit FlowDocument/etc. Ich kann nicht herausfinden, was die beste Option wäre. Das Hauptproblem ist, dass die Zellen nicht einheitlich in der Größe sind, da sie auf der Länge der Zeit variieren, und ich würde auch gerne Polster dazwischen legen. Außerdem muss ich nur in der Lage sein, einen Teil der Tabelle anzuzeigen, und ihnen erlauben, nach oben/unten/rechts zu rollen, um den Rest zu sehen.Welche Tabelle/Grid Control in WPF?

Was wäre die beste WPF-Steueroption dafür? Hier ist eine kleine Illustration von dem, was ich anstrebe. Das weiße Quadrat in der oberen linken Ecke ist das, was ich am Anfang anzeigen möchte, und erlaube ihnen, zu dem Rest zu scrollen.

enter image description here

+0

was ist mit einem Wrap-Panel können Sie einen Scroll-Viewer es schaffen das Scrollen hinzufügen, und so lange, wie Sie Ihren Bildschirm in Ordnung zu bringen und die gleiche Höhe, die Breite und die Platzierung Ausgabe würde durch das Panel gelöst werden – Clueless

Antwort

3

Es gibt mehrere Möglichkeiten zu erreichen, was Sie versuchen, hier zu tun. Wenn die Leistung kein Problem ist, würde ich die Virtualisierung ignorieren und versuchen, die DockPanel Der Nachteil hier ist, dass Sie die Elemente in der Reihenfolge hinzufügen müssten, anstatt sie nach Zeile hinzuzufügen.

Eine andere Option wäre die Verwendung von zwei Stapelfeldern (eines in jeder Richtung). Dies behebt das Problem beim Hinzufügen, erfordert jedoch die Verwendung mehrerer Bereiche.

Beide der beiden vorherigen Optionen erfordern die Einstellung von Höhe/Breite für einzelne Elemente.

Eine letzte Option (abhängig davon, wie groß Ihr Raster ist) wäre die Verwendung eines Rasters mit Zeilen und Spalten fester Größe mit Elementen, die sich über Zeilen erstrecken (unter Verwendung der rowspan-Eigenschaft). Der Nachteil dieser Methode besteht darin, dass ich keine gute Möglichkeit kenne, dieses Steuerelement in xaml für eine nicht angegebene Anzahl von Zeilen/Spalten zu erstellen, sodass Sie es im Code erstellen müssten, um die benötigte Anzahl an Zeilen/Spalten zu erhalten.

Wenn Sie Leistungsprobleme haben, können Sie versuchen, die VirtualizingStackPanel verwenden. Wenn dies Ihren Leistungsanforderungen immer noch nicht entspricht, müssen Sie die VirtualizingPanel Unterklasse erstellen und an Ihre spezifischen Bedürfnisse anpassen.

Weitere Informationen zur Panel-Leistung finden Sie unter here.

Ich schlage vor, die zwei StackPanel Methode versucht zuerst, dann die VirtualizingStackPanel Methode und schließlich, wenn das nicht funktioniert, dann versuchen Sie VirtualizingPanel

Padding leicht durch Einstellen der Margin Eigenschaft auf jedem Substeuerelement erreicht wird.

Für den Einsatz Scrollen die ScrollViewer

+0

Ich würde denken, die StackPanels wäre der beste Ansatz –

+0

Vielen Dank für die tolle Antwort. Ich werde weitermachen und das Kopfgeld annehmen. Ich werde die Stack Panels mit Scroll Viewer verwenden, aber es wäre am besten, wenn ein vertikales Stack Panel mit den Channel Namen auf der linken Seite und ein horizontales Stack Panel auf jeder Seite für EPG Daten oder nur einen Block hätte der horizontalen Stack Panels, 1 für jeden Kanal, und stattdessen den Kanalnamen/Symbol in diesem? –

+0

@BrettPowell Ich würde wahrscheinlich ein Itemscontrol mit einem Stackpanel als Itemspanel (das ist die Standardeinstellung) für die vertikale und dann eine Vorlage mit einem Steuerelement für den Kanal neben einem horizontalen Stackpanel für die Shows. Dies sollte Layout und Bindung vereinfachen. – mydogisbox

Verwandte Themen