Walter Fabio Simoni Walter Fabio Simoni - 2 months ago 14
C# Question

Bind an ObservableCollection to a wpf datagrid : Grid stays empty

I would like to bind an

ObservableCollection
to wpf datagrid.
My
ObservableCollection
is not empty, but, my datagrid stay empty :

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

public Fenetre_EvtCode()
{
InitializeComponent();

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

}
}


Here is my xaml :

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


I repeat : i looked in debug, and my
ObservableCollection
is not empty.

Anyone know why ma datagrid stay empty ?

Answer

You need to bind to a public property.

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

And XAML:

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

Edit: see also this answer