Bind an ObservableCollection to a wpf datagrid : Grid stays empty

25,836

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

Share:
25,836
Walter Fabio Simoni
Author by

Walter Fabio Simoni

Updated on July 09, 2022

Comments

  • Walter Fabio Simoni
    Walter Fabio Simoni almost 2 years

    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}" />
    

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

    Anyone know why ma datagrid stay empty?

  • RBT
    RBT almost 8 years
    What is the underlying reason due to which it does not work only by setting ItemsSource property on datagrid? if we have defined an observable collection (already populated) in the code behind and setting the ItemSource property in datagrid then WPF run time should be able to bind to it using MVVM pattern. I wonder why it doesn't.