XAML: Binding UserControl
Quote from paolo guccini on 31/12/2021, 20:31Ciao!
Bisogna sapersi fermare e chiedere aiuto... Dopo tre giorni... Ecco una sfida XAML di cui non ho trovato chiare risposte su internet... Se mi riesci ad aiutare mi renderesti felice!
Ho uno UserControl (UC) che contiene:
- una DataGrid e (DG)il DataContext (DC) è costituito da una classe (M)
M contiene varie proprieta. Esse sono dotate di public get/set e OnPropertyChanged()
DC è instanziato nella Window (W)
nella Window (W) instanzio 5 "UC" bindati a 5 diverse List<string> presenti in una classe (M)
Domanda: Come passare a ogni ""UC/A" l'ItemsSource per la propria DataGrid (DG) ?
Ho creato un DependencyProperty in UC/A (dotato di OnNotifyChanged), per acquisire l'ItemsSource List<string>. Funziona, infatti uso un IConverterValue per verificare l'arrivo dei valori.Però le 5 DG non visualizzano i valori.
Ma, ecco il bello, se imposto l'ItemsSource delle 5 DG attraverso C#, allora le GD funzionano e visualizzano le stringhe.
Altre proprietà di M vengono normalmente visualizzate...
So che si tratta di una bella domanda... Riesci ad aiutarmi? Cmq Grazie!!
Ciao!
Bisogna sapersi fermare e chiedere aiuto... Dopo tre giorni... Ecco una sfida XAML di cui non ho trovato chiare risposte su internet... Se mi riesci ad aiutare mi renderesti felice!
Ho uno UserControl (UC) che contiene:
- una DataGrid e (DG)
il DataContext (DC) è costituito da una classe (M)
M contiene varie proprieta. Esse sono dotate di public get/set e OnPropertyChanged()
DC è instanziato nella Window (W)
nella Window (W) instanzio 5 "UC" bindati a 5 diverse List<string> presenti in una classe (M)
Domanda: Come passare a ogni ""UC/A" l'ItemsSource per la propria DataGrid (DG) ?
Ho creato un DependencyProperty in UC/A (dotato di OnNotifyChanged), per acquisire l'ItemsSource List<string>. Funziona, infatti uso un IConverterValue per verificare l'arrivo dei valori.
Però le 5 DG non visualizzano i valori.
Ma, ecco il bello, se imposto l'ItemsSource delle 5 DG attraverso C#, allora le GD funzionano e visualizzano le stringhe.
Altre proprietà di M vengono normalmente visualizzate...
So che si tratta di una bella domanda... Riesci ad aiutarmi? Cmq Grazie!!
Quote from The DotnetWorker Team on 03/01/2022, 09:41Ciao Paolo,
Oltre a rinnovarti l'invito a unirti a .Net Friends su Discord cliccando il link qui sopra e scaricando il client, leggendo quanto scrivi la sola cosa che non sembra corretta nella logica del tuo progetto è che stai usando delle List<generic> come datasource e le List<generic> non implementano la parte di PropertyChanged che WPF usa per comunicare quando inserisci o modifichi dati nella collection. Prima di provare altro, prova a cambiare le List<generic> con delle ObservableCollection<generic> visto che hai indicato che gli oggetti dentro alle liste implementano INotifyPropertyChanged, potrebbe essere la sola cosa che manca.
Una ulteriore cosa da controllare è che una volta generata e assegnata una collection come source, essa non cambi se non per il fatto che aggiungi o togli oggetti al suo interno.Prova e facci sapere (volendo su Discord dove i messaggi arrivano subito, prometto che nessuno di noi morde :P)
Sabrina
Ciao Paolo,
Oltre a rinnovarti l'invito a unirti a .Net Friends su Discord cliccando il link qui sopra e scaricando il client, leggendo quanto scrivi la sola cosa che non sembra corretta nella logica del tuo progetto è che stai usando delle List<generic> come datasource e le List<generic> non implementano la parte di PropertyChanged che WPF usa per comunicare quando inserisci o modifichi dati nella collection. Prima di provare altro, prova a cambiare le List<generic> con delle ObservableCollection<generic> visto che hai indicato che gli oggetti dentro alle liste implementano INotifyPropertyChanged, potrebbe essere la sola cosa che manca.
Una ulteriore cosa da controllare è che una volta generata e assegnata una collection come source, essa non cambi se non per il fatto che aggiungi o togli oggetti al suo interno.
Prova e facci sapere (volendo su Discord dove i messaggi arrivano subito, prometto che nessuno di noi morde :P)
Sabrina