So che questo è già stato chiesto ma ho fatto quasi tutto ciò che è suggerito dagli sviluppatori.
Sto cercando di mostrarlo nella finestra di dialogo modale e compilando l’elenco delle licenze nel costruttore della finestra di dialogo modale. Ma ancora nulla viene popolato all’interno del datagrid.
Codice costruttore:
public diagboxclass() { List list = new List(); list = GetObjectList(); } public class object { string id; DateTime date; public string ID { get { return id; } set { id = value; } } public DateTime Date { get { return date; } set { date = value; } } }
Ragazzi, pensate che qualcosa abbia a che fare con la lista degli oggetti?
PER FAVORE, non usare l’ object come nome di class:
public class MyObject //better to choose an appropriate name { string id; DateTime date; public string ID { get { return id; } set { id = value; } } public DateTime Date { get { return date; } set { date = value; } } }
È necessario implementare INotifyPropertyChanged
per questa class e, naturalmente, chiamarla sul setter della proprietà . Altrimenti le modifiche non si riflettono nel tuo ui.
La class Viewmodel / dialogbox class dovrebbe avere una Property
dell’elenco MyObject
. ObservableCollection
è la strada da percorrere:
public ObservableCollection MyList { get... set... }
Nel tuo xaml
devi impostare la Itemssource
nella tua raccolta di MyObject
. (il Datacontext
deve essere la tua class per le windows di dialogo!)
Senza vedere la suddetta lista di oggetti, credo che dovresti ItemsSource
proprietà ItemsSource
di DataGrid, non al suo DataContext
.
(Ciò presuppone che l’elemento [UserControl, ecc.] Che contiene DataGrid abbia il proprio DataContext associato a un object che contiene la raccolta di list
. DataGrid è derivato da ItemsControl
, che si basa sulla sua proprietà ItemsSource
per definire la raccolta che associa le sue righe Quindi, se l’ list
non è una proprietà di un object associato al DataContext del proprio controllo, potrebbe essere necessario impostare sia DataContext={Binding list}
che ItemsSource={Binding list}
su DataGrid …)
prova a fare questo nel codice dietro
public diagboxclass() { List
Assicurati inoltre che la tua lista sia effettivamente popolata e, come menzionato da Blindmeis, non usi mai parole che hanno già una funzione in c #.