yang
yang

Reputation: 31

WPF DataGridTextColumn binding relation table data (WPF / EF / PRISM)

I have a code, but binding association table data doesn't work.

There are two tables, one Products table and one supplier table.

Products XAML

<DataGrid ItemsSource="{Binding ListCollection}" ...>
<DataGrid.Columns>
                <DataGridTextColumn Header="ID" Binding="{Binding ProductId}"></DataGridTextColumn>
                <DataGridTextColumn Header="ProductName" Binding="{Binding ProductName}"></DataGridTextColumn>
                <DataGridTextColumn Header="Supplier" Binding="{Binding Supplier.SupplierName}"></DataGridTextColumn>
            </DataGrid.Columns>
</DataGrid>

Products ViewModel

class Products{
    public ProductsViewModel()
    {
        using (EFDBEntities efdb = new EFDBEntities())
        {
            ListCollection = new ObservableCollection<Products>(efdb.Products); 
        }
    }

    private ObservableCollection<Products> _listCollection = new ObservableCollection<Products>();
    public ObservableCollection<Products> ListCollection
    {
            get => _listCollection;
            set => SetProperty(ref _listCollection, value);
    }
}

entity framework (Products)

public partial class Products
    {
        public int ProductId { get; set; }
        public string ProductName { get; set; }
        public virtual Supplier Supplier { get; set; }
    }

But the supplier has no data

table image

Upvotes: 0

Views: 51

Answers (1)

yang
yang

Reputation: 31

don't use

        using (EFDBEntities efdb = new EFDBEntities())
        {
            ListCollection = new ObservableCollection<Products>(efdb.Products); 
        }

Change to

        private EFDBEntities efdb;
        public ProductsViewModel()
        {
            efdb = new EFDBEntities();
            ListCollection = new ObservableCollection<Products>(efdb.Products);
        }

Problem solving

Upvotes: 0

Related Questions