Ho una finestra WPF che visualizza diverse viste autodefinite. Finora sono stato in grado di utilizzare tutto ciò che ho imparato su MVVM :)Associazione di più viste a più modelli di visualizzazione
Ora ho avuto un nuovo "problema": ho 10 entità della stessa vista in una vista più grande. Queste dieci entità di visualizzazione contengono un insieme di controlli (casella di testo, casella combinata ecc.) Ma sono tutti coerenti.
Quindi, come si collegano queste viste a un ViewModel?
Ho pensato di avere 10 istanze del ViewModel nel ViewModel "di livello superiore" e dare alle viste definite le istanze della VM come datacontext.
La mia domanda è ora -> Esiste un modo più semplice (o più conveniente) per associare molte visualizzazioni (identiche) ai loro modelli di visualizzazione?
Codice-Esempio:
Vista Modello:
private PanelViewModel _panelViewModel1 = new PanelViewModel();
public PanelViewModel PanelVM1
{
get { return _panelViewModel1; }
}
View-Esempio:
<myControls:vwPanel HorizontalAlignment="Left" x:Name="vwPanel1"
VerticalAlignment="Top" DataContext="{Binding Path=PanelVM1}"/>
Quello che mi dà fastidio è che avrei avuto bisogno di questa logica dieci volte per dieci viste ?
UPDATE: rispondere ad alcune domande: voglio mostrare un punto di vista 10 volte (nel mio esempio) ho definito il mio punto di vista ereditando da UserControl. Quindi il mio vwPanel
eredita da UserControl
. I 10 vwPanel sono appena posizionati all'interno di uno StackPanel all'interno di una griglia.
Non si tratta di visualizzare dati, come hai sottolineato, ci sarebbe un listview o un datagrid un posto migliore per iniziare. E 'un caso particolare in cui ho bisogno di questo tanto di ingresso-comandi:/
UPDATE2: quello che speravamo era più simile a definire un elenco di ViewModels e si legano i miei 10 Visualizzazioni a uno di questo elenco. Ma questo non funzionerà, vero? Almeno non saprei come fare riferimento ad una "speciale" entrata nell'elenco XAML ...
Le dieci viste nella vista più grande sono definite in modo specifico? In altre parole, c'è qualche ragione per cui non è possibile, ad esempio, creare un elenco e associare tale elenco a un oggetto IEnumerable dei tuoi ViewModels e visualizzarli in questo modo? – Tim
@Tim Ho bisogno di loro nell'ordine corretto per inserire e stampare nell'ordine corretto. Sarebbe possibile senza averli appositamente definiti? – basti