У меня есть наблюдение, называемое клиентами, которая содержит список клиентов, который затем отображается в списке. В настоящее время всякий раз, когда добавляется новый клиент, просмотр списка автоматически обновляет, что здорово. Однако это также не добавляет клиента в базу данных, что я и хотел бы. В функции createclientbtn_click, чтобы добавить его в базу данных, но я бы хотел, чтобы это произошло автоматически таким же образом таким же образом, что он обновляет пользовательский интерфейс. < /p>
Как я могу запустить Изменение базы данных всякий раз, когда изменяется OversableCollection? < /p>
Модели < /p>
public class Order
{
public int Id { get; set; }
public float Amount { get; set; }
public DateTime Date { get; set; }
public Client Client {get; set;}
}
public class Client
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
< /code>
Просмотреть модели: < /p>
public class ViewModelBase : ObservableObject {}
public partial class ClientViewModel : ViewModelBase
{
public ObservableCollection Clients { get; set; }
public ClientViewModel() {}
}
public partial class OrderViewModel: ViewModelBase
{
public ObservableCollection Orders { get; set; }
public OrderViewModel() {}
}
< /code>
Просмотр:
mainwindow.xaml
Create Client
< /code>
mainwindow.xaml.cs:
public sealed partial class MainWindow : Window
{
public ClientViewModel ViewModel { get; }
public MainWindow()
{
this.InitializeComponent();
ViewModel = App.GetService();
clientsList.ItemsSource = ViewModel.Clients;
}
private void createClientBtn_Click(Object sender, RoutedEventArgs e)
{
if (firstNameBox.Text.Length > 0 && lastNameBox.Text.Length)
{
Client client=new User(firstNameBox.Text, lastNameBox.Text);
ViewModel.Clients.Add(client);
ClientData.AddClientData(client); //I want to call this automatically somehow
}
}
}
< /code>
Код, связанный с базой данных: < /p>
public class DataContext : DbContext
{
public DbSet Clients { get; set; }
public DbSet Orders { get; set; }
}
public static class ClientData
{
public static void AddClientData(Client client)
{
using (var db = new CaseNoteManagerContext())
{
db.Add(client);
db.SaveChanges();
}
}
public static List GetClients()
{
using (var db = new DataContext())
{
return db.Clients.ToList();
}
}
}
public static class OrderData
{
public static void AddOrderData(Order order)
{
using (var db = new DataContext())
{
db.Add(order);
db.SaveChanges();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/776 ... ui-wpf-app