2013-02-26 18 views
6

Chciałbym związać ObservableCollection z wpf datagrid. Moja ObservableCollection nie jest pusta, ale, moim DataGrid pozostać puste:Powiąż obserwowalną kolekcję z datagridem wpf: Siatka pozostaje pusta

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

    public Fenetre_EvtCode() 
    { 
     InitializeComponent(); 

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

Tu jest mój XAML:

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

Powtarzam: Spojrzałem w debugowania, a mój ObservableCollection nie jest pusta.

Ktoś wie dlaczego ma datagrid pozostaje pusty?

+1

Gdzie ustawiasz 'DataContext'? Ponadto, nie wierzę, że możesz związać pola - myślę, że musisz związać się z nieruchomością, chociaż mógłbym się mylić. –

+0

Implementacja INotifyPropertyChanged na twoim oknie i wywołanie tego po 'glb_ObservableEvtCode = myEvt.GetAllEvtCode();' tej linii –

+0

@JordyVanEI Myślę, że nie jest to potrzebne w tym szczególnym przypadku, ponieważ kolekcja jest tworzona w konstruktorze okna –

Odpowiedz

16

Musisz powiązać z publiczną własnością .

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

I XAML:

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

Edit: patrz również ten answer

+1

Co to jest podstawowy powód, z powodu którego nie działa tylko poprzez ustawienie właściwości ItemsSource na datagrid? jeśli zdefiniowaliśmy kolekcję obserwowalną (już wypełnioną) w kodzie źródłowym i ustawiając właściwość ItemSource w datagrid, wówczas czas działania WPF powinien być w stanie powiązać go za pomocą wzorca MVVM. Zastanawiam się, dlaczego tak nie jest. – RBT

0

moim przypadku, jeśli to pomoże ktoś:

Członkowie danych klasy powinny być również własność publiczna.

Powiązane problemy