如何将dbset绑定到ItemsControl?

时间:2019-07-08 08:52:13

标签: wpf

我想使用EF Core连接到Sqlite数据库,并遵循本教程(https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite)。

一切正常(包括插入/删除/更新等)。

有一个DbContext

public Database.ProductDbContext PDC = new Database.ProductDbContext();

我也想将dbset PDC.StoreIn绑定到ItemsControl

我尝试像这样绑定它,但是根本不起作用:

报告错误:

System.Windows.Data Error: 40 : BindingExpression path error: 'PDC+StoreIn' property not found on 'object' ''SelectProduct' (Name='')'. BindingExpression:Path=PDC+StoreIn; DataItem='SelectProduct' (Name=''); target element is 'CollectionViewSource' (HashCode=8674443); target property is 'Source' (type 'Object')

但是,如果我将其转换为ObservableCollection并绑定它,它就可以工作。就是这样:

public ObservableCollection OC = new ObservableCollection<Database.StoreIn>(PDC.StoreIn);

<ItemsControl ItemsSource="{Binding OC">
</ItemsControl>

据我们所知,每当数据库插入/更新/删除时,ObservableCollection都不会更新,因此我必须直接绑定数据库。

如何绑定dbset?谢谢。

================================================ =====

最后,我发现另一种解决方案更容易,但找不到重复的解决方案。

public ObservableCollection<Database.StoreIn> OC
        {
            get {                
                return new ObservableCollection<Database.StoreIn>(PDC.StoreIn);
            }
        }

只需绑定OC。

每当您插入/更新/删除数据库时,例如:

PDC.StoreIn.Local.Add(new Database.StoreIn());
                PDC.SaveChanges();
                OnPropertyChanged("OC");

使用INotifyPropertyChanged,则在您现在更改数据库时,UI也会更改。

0 个答案:

没有答案