<prompt> Tengeneza programu ya C kwa kutumia WPF ili kudhibiti orodha rahisi ya anwani iliyo na sehemu kama vile jina, nambari ya simu na anwani ya barua pepe. Tekeleza ukaguzi wa uthibitishaji wa data na uendelee na data ya orodha ya anwani katika hifadhidata ya karibu ya SQLite.PLINFORMAT  <response>: kutumia Mfumo;kwa kutumia System.Collections.ObjectModel;kwa kutumia System.ComponentModel;kwa kutumia System.Data.Entity;kwa kutumia System.Runtime.CompilerServices;kwa kutumia System.Windows;nafasi ya majina ContactListApp Mawasiliano ya darasa la umma Id ya int ya umma pata; kuweka; umma kamba Jina kupata; kuweka; kamba ya umma Nambari ya simu pata; kuweka; kamba ya umma EmailAddress pata; kuweka; public class ContactsDbContext : DbContext umma DbSet Anwani pata; kuweka; batili iliyolindwa ya kubatilisha OnConfiguringDbContextOptionsBuilder optionsBuilder optionsBuilder.UseSqliteChanzo cha Datacontacts.db; darasa la umma MainViewModel : INotifyPropertyChanged Private ObservableCollection _contacts; Public ObservableCollection Anwani pata _mawasiliano; kuweka _mawasiliano thamani; OnPropertyChanged; Tekeleza sifa na mbinu zingine za kuongeza, kusasisha, na kufuta anwani. tukio la umma PropertyChangedEventHandler PropertyChanged; utupu pepe uliolindwa OnPropertyChangedCallerMemberName kamba propertyName null PropertyChanged?.Invokehii, PropertyChangedEventArgs mpyapropertyName; darasa la sehemu ya umma Dirisha kuu : Dirisha binafsi MainViewModel _viewModel; public Window AnzishaComponent; _viewModel new MainViewModel; DataContext _viewModel; utupu wa faragha AddContact_Clickmtumaji wa kitu, RoutedEventArgs e Thibitisha sehemu za uingizaji ikiwa string.IsNullOrWhiteSpacetxtName.Text string.IsNullOrWhiteSpacetxtPhoneNumber.Text string.IsNullOrWhiteSpacetxtEmailAddress.Text MessageBox.OnyeshaNyuga zote zinahitajika.; kurudi; Unda mwasiliani mpya na uiongeze kwenye hifadhidata var contact Anwani mpya Jina txtName.Text, PhoneNumber txtPhoneNumber.Text, EmailAddress txtEmailAddress.Text ; _viewModel.OngezaMawasilianomawasiliano; Futa sehemu za ingizo txtName.Clear; txtPhoneNumber.Clear; txtEmailAddress.Clear; Utupu wa umma AddContactAnwani ya Mawasiliano kutumia var db new ContactsDbContext db.Mawasiliano.Ongezamawasiliano; db.SaveChanges; LoadContacts; Usasishaji utupu wa ummaMawasilianoAnwani ya mawasiliano kutumia var db new ContactsDbContext db.Entrycontact.State EntityState.Imebadilishwa; db.SaveChanges; LoadContacts; utupu wa umma FutaMawasilianoAnwani ya Mawasiliano kutumia var db new ContactsDbContext db.Entrycontact.State EntityState.Imefutwa; db.SaveChanges; LoadContacts; utupu binafsi LoadContacts kutumia var db new ContactsDbContext Contacts new ObservableCollectiondb.Contacts.ToList; 