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
...
Irgendwelche Ideen? Ich benutze MVVM, also versuche ich idealerweise möglichst keinen Code-Behind zu verwenden
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.
Tags und Links wpf mvvm listview datatemplate itemspanel