Associazione datagrid in WPF

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 list = new List(); list = GetObjectList(); Imported.ItemsSource = null; Imported.ItemsSource = 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 #.