Ho un'applicazione WPF con pattern MVVM. In uno dei miei punti di vista, devo legare un ObservableCollection
per visualizzare. A questo punto di vista, ho una ListBox
e uno DataGrid
entrambi si legano allo stesso ObservableCollection
ma fare cose diverse, come gli eventi, lo stile ecc ..DataGridColumn con intestazione "*" già presente nell'insieme Columns di un DataGrid
ho bisogno di uno solo di questi controlli visualizzati in un tempo e quello che ho fatto è stato creato due controlli utente, uno per DataGrid
e altri per ListBox
. E ho commutato tra loro posizionando un ContentControl
sulla vista principale (qualcosa di simile a questo blog. La vista predefinita è DataGrid
e quando si fa clic su un pulsante viene visualizzata l'altra vista (ad esempio ListBox
). Fino a questo sta funzionando bene.
Un'altra cosa da tenere a mente che le colonne Griglia dati sono generate dinamicamente utilizzando la soluzione descritta nel seguente link. Quindi quando torno alla visualizzazione DataGrid
viene generato un errore durante l'aggiunta di colonne alla griglia dati nell'istruzione foreach
(pls fare riferimento alla risposta del collegamento precedente) come
"DataGridColumn con intestazione" Ord "esiste già nella raccolta Columns di
DataGrid
. DataGrid non possono condividere le colonne e non possono contenere le istanze di colonna duplicati."
Ma sono sicuro che prima di aggiungere colonne per DataGrid
sua proprietà Count
è pari a zero (dataGrid.Columns.Count()). Così come l'intestazione DataGrid
proprietà vengono mantenute? c'è un modo per cancellare i valori di intestazione ?.
si prega di suggerire ...
È possibile provare uno strumento come [Snoop] (http://snoopwpf.codeplex.com/) per esaminare l'albero visivo. – oddparity
Possiamo vedere il ViewModel e il Modello per questo o almeno un esempio equivalente? –
Il problema potrebbe dipendere dalla variabile 'columns' che si popola dagli argomenti. Utilizzare il debugger ed esaminare il contenuto di quello precedente all'istruzione foreach a cui si sta facendo riferimento. La duplicazione potrebbe essere lì –