ListView: Definieren Sie ItemsPanelTemplate im Ressourcenwörterbuch

8

Ich habe ein ListView welches Layout wie eine Windows Explorer Ansicht aussieht (Icon + einige Details), gebunden an eine Liste irgendwo im ViewModel.

Mein Ziel ist es, jederzeit zwischen der Exploreransicht und der klassischen Ansicht wechseln zu können.

Ich könnte ein ItemsPanelTemplate definieren, das genau die Arbeit macht, um das Layout direkt im Feld ListView.ItemsPanel korrekt anzuzeigen. Nun möchte ich es in den Ressourcen definieren, so dass ich es in verschiedenen Ansichten verwenden kann, und insbesondere in einem Steuerelement sollte der Benutzer die Wahl zwischen Explorer-Ansicht oder klassischer Listenansicht haben (das Standard-Rendering für eine Liste)

Wie hast du das gemacht? Ich kann kein ItemsPanelTemplate in meinem ResourceDictionary definieren, und wenn ich ein DataTemplate definiere, ist es nicht kompatibel (während ich dachte, dass ItemsPanelTemplate nach reiner Logik von DataTemplate erben sollte, aber nicht so aussehen).

Code-Snippet für die aktuelle Liste:

%Vor%

Das ItemTemplate in einer statischen Ressource zu behalten, war einfach, aber jetzt kann ich nichts mit dem ItemsPanelTemplate ...

machen

Irgendwelche Ideen? Ich benutze MVVM, also versuche ich idealerweise möglichst keinen Code-Behind zu verwenden

    
Damascus 18.04.2011, 16:03
quelle

1 Antwort

7

Sie würden dafür einen Stil für die gesamte ListView verwenden.

Sie würden also tun:

%Vor%

Wenn Sie möchten, dass der Benutzer zwischen dem Explorer und der klassischen Ansicht wechseln kann, definieren Sie einfach einen zweiten Stil und wechseln Sie den Stil der Listenansicht. Dies kann zum Beispiel mit einigen VisualStates und einem 'DataStateBehavior' geschehen.

Alternativ könnten Sie einen Stil mit einigen DataTriggers und Setter für die einzelnen ItemsPanels erstellen.

    
Markus Hütter 18.04.2011, 17:17
quelle