У меня небольшая проблема с ListView в приложении WPF MVVM. Мой проект использует файл базы данных Sqlite с Dapper-Contrib. Я могу успешно добавить нового сотрудника, но мой ListView не будет обновляться впоследствии.
Мой код выглядит следующим образом: SqlRepository.cs (универсальная функция)
public IList<TEntity> GetAll()
{
return DbContext.Connection.GetAll<TEntity>().ToList();
}
ISqlRepository.cs (интерфейс)
IList<TEntity> GetAll();
EmployeeViewModel.cs (ViewModel для моего основного вида)
using Autofac;
using AutoMapper;
using Calendar.Commands;
using Calendar.Database.Entities;
using Calendar.Database.Repositories;
using Calendar.Models;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows;
namespace Calendar.ViewModels
{
internal class EmployeeViewModel : ViewModelBase
{
private RelayCommand command;
ObservableCollection<EmployeeEntity> m_lstEmployees = new ObservableCollection<EmployeeEntity>();
/// <summary>
/// Initializes a new instance of the EmployeeViewModel class.
/// </summary>
public EmployeeViewModel()
{
employee = new Employee();
}
public Employee employee
{
get;
set;
}
public RelayCommand AddNewEmployee
{
get
{
this.command = new RelayCommand(SaveChanges);
return this.command;
}
}
public void SaveChanges()
{
var container = ContainerConfig.Configure();
using (var scope = container.BeginLifetimeScope())
{
var test = scope.Resolve<IEmployeeRepository>();
employee.FirstName = this.employee.FirstName;
employee.LastName = this.employee.LastName;
var config = new MapperConfiguration(cfg => cfg.CreateMap<Employee, EmployeeEntity>());
var mapper = config.CreateMapper();
var test99 = mapper.Map<EmployeeEntity>(employee);
test.Add(test99);
}
}
public ObservableCollection<EmployeeEntity> EmployeeList
{
get
{
var container = ContainerConfig.Configure();
using (var scope = container.BeginLifetimeScope())
{
var test = scope.Resolve<IEmployeeRepository>();
IList<EmployeeEntity> gugus = test.GetAll();
foreach (var item in gugus)
m_lstEmployees.Add(item);
}
return m_lstEmployees;
}
}
}
}
MainWindow.xaml
<ListView ItemsSource="{Binding EmployeeList, UpdateSourceTrigger=PropertyChanged}">
<ListView.View>
<GridView>
<GridViewColumn Header="FirstName" DisplayMemberBinding="{Binding FirstName}"/>
<GridViewColumn Header="LastName" DisplayMemberBinding="{Binding LastName}"/>
</GridView>
</ListView.View>
</ListView>
Я знаю, что мне нужна коллекция ObservableCollection, поэтому PropertyChangedможет вызывать (EmployeeViewModel наследует ViewModelBase, которая содержит материал InotifyPropertyChanged).
Похоже, что при добавлении новой записи в мою базу данных нет "обратной связи". Что я пропустил?