2013-02-26 6 views
6

Vorrei associare un datagrid wpf a ObservableCollection. mio ObservableCollection non è vuoto, ma, il mio datagrid rimanere vuoto:Associare una ObservableCollection a un datagrid wpf: La griglia rimane vuota

public partial class Fenetre_EvtCode : Window 
{ 
    ObservableCollection<EvtCode> glb_ObservableEvtCode; 

    public Fenetre_EvtCode() 
    { 
     InitializeComponent(); 

     EvtCode myEvt = new EvtCode(); 
     glb_ObservableEvtCode = myEvt.GetAllEvtCode(); 
    } 
} 

Ecco il mio XAML:

<DataGrid Foreground="Aqua" 
      Name="myDataGridEvtCode" 
      AutoGenerateColumns="True" 
      HorizontalAlignment="Stretch" 
      Margin="0,0,0,0" 
      VerticalAlignment="Stretch" 
      Height="453" 
      ItemsSource="{Binding glb_ObservableEvtCode}" /> 

Ripeto: ho guardato in di debug, e il mio ObservableCollection non è vuoto.

Qualcuno sa perché ma datagrid rimane vuoto?

+1

Dove si imposta il 'DataContext'? Inoltre, non credo che tu possa legare ai campi - penso che devi legarti a una proprietà, anche se potrei sbagliarmi. –

+0

Implementa INotifyPropertyChanged sulla tua finestra e chiama questo dopo 'glb_ObservableEvtCode = myEvt.GetAllEvtCode();' quella riga –

+0

@JordyVanEI Penso che questo non sia necessario in questo caso speciale poiché la raccolta è creata nel costruttore della finestra –

risposta

16

È necessario associare a una proprietà pubblica .

public ObservableCollection<EvtCode> ObservableEvtCode 
{ 
    get 
    { 
    return this.glb_ObservableEvtCode; 
    } 
} 

E XAML:

<DataGrid 
    ... 
    DataContext="{Binding RelativeSource={RelativeSource AncestorType=Window}}" 
    ItemsSource="{Binding ObservableEvtCode}" > 
</DataGrid> 

Edit: Vedi anche answer

+1

Che cos'è motivo sottostante a causa del quale non funziona solo impostando la proprietà ItemsSource su datagrid? se abbiamo definito una raccolta osservabile (già popolata) nel codice retrostante e impostando la proprietà ItemSource in datagrid, il tempo di esecuzione di WPF dovrebbe essere in grado di collegarlo utilizzando il pattern MVVM. Mi chiedo perché non lo faccia. – RBT

0

Il mio caso, se questo può aiutare chiunque:

I membri di dati di classe dovrebbe anche essere proprietà pubblica.