Как использовать событие INotifyPropertyChanged на ICollectionView?

Мой сценарий ниже:

Я использую EF4 и использую linq. У меня есть datagrid, связанный с ICollectionView (bacause я использую фильтрацию), как показано ниже:

view = CollectionViewSource.GetDefaultView(lstOrdsRlsd);
                if (lstOrdsRlsd.Count > 0)
                {
                    dgRecords1.ItemsSource = view;
                }

где lstOrdsRlsd - наблюдаемый сбор.

Моя проблема:

Мне нужно обновить datagrid, когда что-то изменилось в базе данных (будь то добавление новой строки или изменение какого-либо свойства одной записи и т. Д.).

Я пробовал datagrid.Items.Refresh() , который не работал. Могу ли я использовать INotifyPropertyChanged в этом случае? Может ли кто-нибудь дать пример кода о том, как это реализовать?

благодаря

0
nl ja de

2 ответы

Новая строка в базе данных автоматически не отражается в вашем приложении. Вам необходимо вручную запросить новые элементы из базы данных и добавить их в свою коллекцию.

0
добавлено
Привет, Даниэль, спасибо за ваш ответ. Это хорошая идея использовать таймер и повторно запрашивать базу данных
добавлено автор sony, источник
Я не знаю. Это зависит от ваших бизнес-требований.
добавлено автор Daniel Hilgarth, источник
Если вы используете SQL Server (не экспресс), то может быть хорошей идеей использовать SqlDependency / SqlChangeMonitor
добавлено автор paul, источник

You can try using the DbSet<>.Local property. This is an observable collection with all the rows that you have queries from you database context.

public ObservableCollection DbSet.Local

So if you do any queries later, and more rows comes back, the DbSet<>.Local collection will INotifyCollectionChanged for you. :)

Итак, следующим шагом является то, что EF извлекает новые строки. Вы можете использовать что-либо из ответа Даниэля Хильгарта, чтобы реализовать это.

0
добавлено
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot