/ / A ItemsControl senza ItemsPresenter (Silverlight) - modelli, silverlight, contentpresenter, itemspresenter

A ItemsControl senza ItemsPresenter (Silverlight) - modelli, silverlight, contentpresenter, itemspresenter

Ho creato un controllo che ha ereditato ItemsControl e il controllo che ho creato non ha un ItemPresenter per il suo modello. Invece, ho una griglia. Voglio fare una lista come questa:


(Articolo 1)


(GridSplitter)


(Articolo 2)


(GridSplitter)


(Articolo 3)


Perché devo inserire il mio GridSplitter tra gli articoli, quindi non posso usare the ItemsPresenter e lascia che compaia l'interfaccia utente per me.

Sovrascrivo il metodo OnItemsChanged () così possoscrivere la mia logica di aggiungere / rimuovere il GridSplitter. Tuttavia, ho ancora bisogno di utilizzare la classe ItemContainerGenerator per generare il ItemTemplate per i miei articoli.

Ma quando non ci sono ItemPresenter nel mio controllomodello, ItemContainerGenerator non sembra funzionare. Quando lo uso per generare l'oggetto per la prima volta, restituisce un ContentPresenter con un DataTemplate. Poi l'ho inserito nella griglia che ho. Tuttavia, non ci sono elementi che appaiono sullo schermo: se aggiungo un altro oggetto, esso verrà lanciato un errore quando inserisco nella griglia dicendo che l'oggetto è già nella struttura visuale. Questa è la ragione per cui penso che ItemContainerGenerator non possa funzionare senza ItemsPresenter.

Così ho provato a sostituire la mia griglia con ItemsPresenter. Questa volta, usa il suo sottolinea la logica per creare elementi e mostra ciò che dovrebbe. Tuttavia, non è quello che voglio.

Il motivo per cui voglio usare ItemContainerGenerator è che ho bisogno di creare Elementi dell'interfaccia utente dal ItemTemplate che ho definito in Xaml.

C'è un modo in cui posso generare l'interfaccia utente con ItemTemplate del mio controllo degli articoli?

risposte:

0 per risposta № 1

Se stai già affrontando il problema diascoltando OnItemsChanged e aggiungendo manualmente il contenuto alla griglia, dovresti semplicemente creare un UserControl invece di usare ItemTemplate, quindi inserire UserControl con il set DataContext impostato sull'oggetto applicabile nel tuo Grid e non preoccuparti dell'inalimentazione dal ItemsControl.