2011-01-07 11 views
5

Gibt es eine universelle XAML-Styling- oder Templating-Technik, um eine datengebundene Liste von Elementen als getrennte Liste auf dem Bildschirm darzustellen?Gelöschte Liste in XAML rendern?

Stellen Sie sich vor, Sie geben etwas wie eine Funktionsaufrufdeklaration in XAML aus: foo(a,b,c) wobei "a", "b" und "c" aus einer Databound-Liste kommen. ("foo" ist auch datengebunden, aber nicht in der Parameterliste)

Die Elemente "a", "b" und "c" müssen XAML-UI-Elemente bleiben, damit sie UI-interaktiv und in XAML lesbar sind . (Also ich denke, das disqualifiziert einfache String-Verkettung als Lösung)

Der kritische Punkt ist nicht haben ein falsches Nachkomma am Ende der Liste.

Dies ist etwas verwandt mit der Frage , wie die ersten und/oder letzten Elemente in einer Liste anders als die mittleren Elemente stylen. Ich habe hier Vorschläge auf Stackoverflow gesehen, um eine ItemsTemplateSelector in einem ItemsControl zu verwenden, um zu testen, ob ein Element der erste oder letzte in der Liste ist und die entsprechende Vorlage zurückgibt, aber das Problem damit ist DataTemplateSelector.SelectTemplate hat keinen Zugriff auf die Liste Artikel kam aus. Sie können das fleischliche Wissen einer bestimmten Liste als einmaligen Kludis hacken, aber wie machen Sie das in einer allgemeinen, wiederverwendbaren Weise?

Antwort

3

In WPF können Sie eine Bindung mit relativer Quelle PreviousData verwenden. Wenn vorherige Daten null sind, wissen Sie, dass es das erste Element in der Liste ist. Daher müssen Sie kein Trennzeichen vorgeben.

Leider unterstützt Silverlight dies nicht und ich konnte keine gute Abhilfe finden, als ich genau die gleiche Anforderung hatte. Am Ende habe ich nur einen Rand gesetzt, so dass das nachfolgende Komma niemals sichtbar sein würde.

+0

BTW: Die Bindung PreviousData wird nicht aktualisiert, wenn Sie ObservableCollection .Move (int, int) verwenden, um Elemente neu zu ordnen. – springy76