du etwas falsch nähern kann, schwer von der Frage- zu sagen
Allgemeinen eine dynamische Gruppe von UI-Elementen in MVVM Sie die Itemssource-Eigenschaft eines Itemscontrol an eine ObservableCollection binden zu zeigen, . Die ItemsControl ItemsTemplate-Eigenschaft konvertiert das YourViewModel-Objekt in ein UIElement, bei dem es sich um einen TextBlock oder einen beliebigen gewünschten Stil handeln kann.
So als Beispiel:
// model
class Person
{
public string Name {get; private set;}
}
// view model
class MainViewModel
{
public ObservableCollection<Person> People {get; private set;}
}
//view
<UserControl DataContext="{Binding MyMainViewModelObject}">
<ItemsControl ItemsSource="{Binding People}">
<ItemsControl.ItemsTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>/
</ItemsControl.ItemsTemplate>
</ItemsControl>
</UserControl>
Ich habe nicht diesen Code getestet, ist es nur zu illustrieren. Es gibt andere Wege, das Problem in MVVM zu zerlegen, alles hängt von der Situation ab. Sie müssten uns mehr Details geben, um Ihnen dabei zu helfen. Selten in WPF ist es notwendig, Code zu verwenden, um UI-Elemente zu anderen UIElements usw. zu erstellen oder hinzuzufügen.
Ein Punkt, um mehr entlang der genauen Zeilen der Frage zu beachten, ist jedoch, dass ein ItemsControl entweder an eine Reihe von regulären binden kann Objekte und verwenden Sie es Vorlage, um UIElements von ihnen zu erstellen, ODER es kann an eine Liste von UIElements binden, in welchem Fall die Vorlage nicht angewendet wird (klingt so ist die Situation, die Sie haben).
Danke Guy. Das Problem ist kompliziert zu erklären. Ich muss ein Raster dynamisch erstellen, da ich die Anzahl der Zeilen/Spalten nicht kenne und die Zellen in einigen Fällen auch mit Farben und Kontextmenüs anpassen kann. All diese Prozedur des Erstellens des Gitters mache ich in Viewmodel. Das einzige, was ich brauche, ist, die Ansicht mit dem erstellten Raster im Ansichtsmodell zu aktualisieren. – Guillermo