Piszę aplikację komputerową w języku C#, używając wzorca MVVM z modelem Entity Framework. Używam DependencyProperties w moich maszynach wirtualnych i przyszedłem (ogólnie) wolę ten system od implementacji INotifyPropertyChanged. Chciałbym zachować spójność. Moja maszyna wirtualna uzyskuje dostęp do Jednostek w Modelu i udało mi się zachować rzeczy całkiem odrębne - widok nie ma wiedzy o maszynie wirtualnej z wyjątkiem nazw wiążących i poleceń, a model zna wiedzę na temat maszyny wirtualnej.Używanie DependencyProperty na ViewModel z Entity Framework
Korzystanie INotifyPropertyChanged w VM, wydaje się dość łatwe do aktualizacji podmiotów, w Modelu:
public string Forename
{
get { return CurrentPerson.Forename; }
set
{
if (Forename != value)
{
CurrentPerson.Forename = value;
NotifyPropertyChanged("Forename");
}
}
}
... gdzie CurrentPerson jest obiektem osobowe auto stworzone przez podmiot danych modelu. Dlatego nie ma prywatnego pola stworzonego specjalnie do przechowywania imienia.
Z DependencyProperties, wydaje się, że musiałbym utworzyć DP, dodać domyślną właściwość, używając GetValue i Setvalue, a następnie użyć PropertyChangedCallback w celu aktualizacji jednostki CurrentPerson. Wywołanie połączenia zwrotnego w tej sytuacji wydaje się zwiększać obciążenie, aby zachować spójność z innymi maszynami wirtualnymi.
Pytanie brzmi zatem, czy jedna lub druga z tych metod to sposób, w jaki powinienem wykonać ? W takim przypadku należy użyć DependencyProperty lub INotifyPropertyChanged? Należy zwrócić uwagę na to, że potencjalnie będzie to projekt na dużą skalę (z wtyczkami i wieloma dostępami do baz danych z różnych maszyn) i że wszystko powinno być tak samo możliwe do ponownego użycia, a moduły jak "odłączone", jak to możliwe. .
Co jest zaletą korzystania z właściwości zależnościami w widoku modelu? Innymi słowy - jaką dodatkową wartość przynosi, że 'INotifyPropertyChanged' nie oferuje. –
Szukam dobrej prędkości i ładnych funkcji wiązania, które pochodzą z DP. Pamiętaj, że jestem związany bezpośrednio z DP z XAML w moim widoku. Prawdopodobne są również częste zmiany wartości nieruchomości. Z referencji, które wcześniej znalazłem, dla szybkości z wiązaniem, DP są do zrobienia. Jest też spójność z resztą mojego projektu. Jednak żadna z tych rzeczy nie jest dobra, jeśli zostanie zanegowana przez wszystkie wywołania zwrotne, które są wykonywane z osobnymi zmianami w obiektach Entity. –