Ich möchte dem Hauptfenster meiner mvvm-Anwendung einen Satz Rechtecke hinzufügen. In meinem ViewModel habe ich eine Sammlung von Objekten, die ich mit einem Konverter (Code unten) in System.Windows.Shapes.Rectangle-Klassen umwandeln kann:
ViewModel:
%Vor%Konverter:
%Vor%Die Rechtecke sollten in einem Canvas in meinem MainWindow angezeigt werden:
%Vor%Ich würde Rectangles zu Canvas im Code hinzufügen, aber ich weiß jetzt nicht, wie viele Rechtecke es zur Laufzeit gibt. Gibt es einen Weg, wie ich das erreichen kann? Tank dich.
Bei einem richtigen MVVM-Ansatz würden Sie ein Ansichtsmodell mit einer abstrakten Darstellung einer Liste von Rechtecken, z. so:
%Vor% Dann hätten Sie eine Ansicht, die ein ItemsControl verwendet, um eine Sammlung solcher Rect
-Elemente zu visualisieren. Das ItemsControl hätte ein Canvas als ItemsPanel
und ein passendes ItemContainerStyle
und ItemTemplate
, die jeweils an die entsprechenden View-Model-Eigenschaften binden. Es könnte so aussehen:
Eine Alternative ohne Bindings in Style Settern (die in UWP nicht funktionieren) könnte folgendermaßen aussehen:
%Vor%Sie können die Sammlung von Rechtecken an ein ItemControl binden und dessen Höhe, Breite und Rand festlegen:
%Vor%Nur eine Idee, um loszulegen ...
Tags und Links wpf c# mvvm user-interface canvas