MVVM + Association
-
Guten Abend,
man denkt eigentlich man hat es langsam mal drauf, und dann kommt man doch wieder an ein vermutlich ganz triviales Problem, für das ich eure Hilfe brauche. Und zwar nehmen wir mal an, wir haben 2 Models, Customer und Order
public class Customer { public int ID { get; set; } public string Name { get; set; } }
public class Order { public int ID { get; set; } public DateTime DeliveryDate { get; set; } public Customer Customer { get; set; } }
sowie ein View-Model welches jeweils eine Liste von Customer und Order-ViewModels hält:
public class MainViewModel : ObservableObject { public ObservableCollection<CustomerViewModel> Customers { get; set; } public ObservableCollection<OrderViewModel> Orders { get; set; } public MainViewModel() { Customers = new ObservableCollection<CustomerViewModel>(); Orders = new ObservableCollection<OrderViewModel>(); CreateTestData(); } private void CreateTestData(){ ... }
here the customer viewmodel
public class CustomerViewModel : ObservableObject { private Customer _model; public CustomerViewModel( Customer customer ) { _model = customer; } public int ID { get { return _model.ID; } set { _model.ID = value; NotifyPropertyChanged(() => ID); } } public string Name { get { return _model.Name; } set { _model.Name = value; NotifyPropertyChanged(() => Name); } } }
und das Order View Model:
public class OrderViewModel : ObservableObject { private Order _model; public OrderViewModel( Order order ) { _model = order; } public int ID { get { return _model.ID; } set { _model.ID = value; NotifyPropertyChanged(() => ID); } } public CustomerViewModel Customer { get { ... } set { ... } } }
Hat man wie zu sehen ist ein kleines Problem bei bei dem Customer Setter. Der CustomerSetter ist im ViewModel vom Typ CustomerViewModel, im Model, das gewrappt wird, ist das Targetproperty vom Type Customer. Das bedeutet ich kann das so nicht einfach durchreichen.
Habt ihr eine Idee, wie ich das Problem, am liebsten innerhalb des Properties, lösen kann? Bitte beachtet, dass der Customer auch null sein kann. Also ein Suchen in irgendwelchen Listen kommt nicht in Frage.
Greetings.