Hier ist der Code:
Delivery.cs
Code: Select all
public class Delivery : INotifyPropertyChanged
{
string nameDelivery = string.Empty;
string? courierUid = null;
public string DeliveryUid { get; set; } = Guid.NewGuid().ToString();
public string NameDelivery
{
get { return nameDelivery; }
set
{
nameDelivery = value;
OnPropertyChanged("NameDelivery");
}
}
public string? CourierUid
{
get { return courierUid; }
set
{
courierUid = value;
OnPropertyChanged("CourierUid");
OnPropertyChanged("NameCourierFull");
}
}
public Courier? Courier { get; set; }
public string NameCourierFull { get { return Courier?.NameCourierFull ?? string.Empty; } }
public event PropertyChangedEventHandler? PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string prop = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
Code: Select all
public class Courier : INotifyPropertyChanged
{
string nameFirst = string.Empty;
string nameSecond = string.Empty;
string nameThird = string.Empty;
public string CourierUid { get; set; } = Guid.NewGuid().ToString();
public string NameFirst
{
get { return nameFirst; }
set
{
nameFirst = value;
OnPropertyChanged("NameFirst");
OnPropertyChanged("NameCourierFull");
}
}
public string NameSecond
{
get { return nameSecond; }
set
{
nameSecond = value;
OnPropertyChanged("NameSecond");
OnPropertyChanged("NameCourierFull");
}
}
public string NameThird
{
get { return nameThird; }
set
{
nameThird = value;
OnPropertyChanged("NameThird");
OnPropertyChanged("NameCourierFull");
}
}
public string NameCourierFull => $"{NameFirst} {NameSecond} {NameThird}";
public ICollection Deliveries { get; set; } = [];
public event PropertyChangedEventHandler? PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string prop = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
Code: Select all
public RelayCommand EditDeliveryCommand
{
get
{
return editDeliveryCommand ??=
new RelayCommand((selectedItem) =>
{
if (selectedItem is not Delivery dbDelivery) return;
Delivery delivery = new()
{
DeliveryUid = dbDelivery.DeliveryUid,
NameDelivery = dbDelivery.NameDelivery,
CourierUid = dbDelivery.CourierUid
};
WindowEditDelivery window = new(delivery, Couriers);
if (window.ShowDialog() == true)
{
dbDelivery.NameDelivery = delivery.NameDelivery;
Courier? courierNew = db.Couriers.FirstOrDefault(c => c.CourierUid == delivery.CourierUid);
dbDelivery.Courier = courierNew;
db.Entry(dbDelivery).State = EntityState.Modified;
db.SaveChanges();
}
}
);
}
}
Code: Select all
OK
Отмена
Code: Select all
public partial class WindowEditDelivery : Window
{
public Delivery Delivery { get; private set; }
public WindowEditDelivery(Delivery delivery, ObservableCollection Couriers)
{
InitializeComponent();
Delivery = delivery;
DataContext = Delivery;
ComboBoxCourier.ItemsSource = Couriers;
}
private void Accept_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
}
}
Code: Select all
Code: Select all
public partial class MainWindow : Window
{
private DeliveryViewModel context;
public MainWindow()
{
InitializeComponent();
context = new DeliveryViewModel();
DataContext = context;
}
}