Search code examples
c#wpfwpfdatagrid

items collection must be empty before using itemssource. wpf datagridtable


Error: items collection must be empty before using itemssource. wpf datagridtable.

It looks like the problem is in my wpf xmal file

<Grid Grid.Column="1">
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.3*"></ColumnDefinition>
        <ColumnDefinition Width="0.7*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <DataGrid Name="datagrid202" ItemsSource="{Binding Results}" 
              HeadersVisibility="Column"
              AutoGenerateColumns="False" Width="368">
              DataGrid AutoGenerateColumns="False" 
              Height="200" 
              HorizontalAlignment="Left" 
              Name="dataGrid1" 
              VerticalAlignment="Top" 
              Width="200">      
    <DataGrid.Columns >
        <DataGridTextColumn Binding="{Binding Path=A}" MinWidth="50" />
        <DataGridTextColumn Binding="{Binding Path=B}" MinWidth="50" />
        <DataGridTextColumn Binding="{Binding Path=C}" MinWidth="50" />
    </DataGrid.Columns>
    </DataGrid>

My model code is

var entrtiefortable = serie_line;
this.shellVM.chartVM.Results= new ObservableCollection<MyDataType>(entrtiefortable.data.ToList());    
this.chartView.datagrid202.ItemsSource = entrtiefortable.data;

Solution

  • In WPF when you would use databinding you should use "datasource" or "itemsource", so the control create the items itself using datatemplate. The target is "let the control manage items for you".

    If you create items in controls after that setup itemsource the engine can't create items correctly.