Hinzufügen von n Rechtecken zu Canvas mit MVVM in WPF

8

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.

    
Philipp Eger 11.03.2014, 11:26
quelle

2 Antworten

39

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:

%Vor%

Eine Alternative ohne Bindings in Style Settern (die in UWP nicht funktionieren) könnte folgendermaßen aussehen:

%Vor%     
Clemens 11.03.2014, 12:06
quelle
4

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 ...

    
Abhinav Sharma 11.03.2014 11:47
quelle

Tags und Links