Sto scrivendo un'applicazione desktop in C# utilizzando lo schema MVVM con un modello Entity Framework. Io tendo ad usare DependencyProperties nella mia VM e sono giunto a (generalmente) preferisco questo sistema rispetto all'implementazione di INotifyPropertyChanged. Mi piacerebbe mantenere le cose coerenti. La mia VM accede alle Entities nel Modello e sono riuscito a mantenere le cose abbastanza separate - la View non ha conoscenza della VM tranne i nomi di binding e comando e il Model ha know knowgege della VM.Utilizzo di DependencyProperty su ViewModel con Entity Framework
Utilizzando INotifyPropertyChanged nella VM, sembra abbastanza facile da aggiornare le Entità del Modello:
public string Forename
{
get { return CurrentPerson.Forename; }
set
{
if (Forename != value)
{
CurrentPerson.Forename = value;
NotifyPropertyChanged("Forename");
}
}
}
... dove CurrentPerson è un oggetto persona auto-creato dal Entity Data Model. Non esiste quindi un campo privato creato appositamente per memorizzare il nome.
Con DependencyProperties, sembra che dovrei creare un DP, aggiungere la Proprietà predefinita, utilizzando GetValue e Setvalue e quindi utilizzare il PropertyChangedCallback per aggiornare l'entità CurrentPerson. Chiamare una richiamata in questa situazione sembra aggiungere un sovraccarico al fine di essere coerente con le altre mie VM.
La domanda è quindi se uno o l'altro di questi metodi è il modo in cui I dovrebbe fare fare le cose? In questo caso, dovrei usare DependencyProperty o INotifyPropertyChanged? Una cosa che dovrebbe essere sottolineata è che questo sarà potenzialmente un progetto su larga scala (con plugin e molti accessi al database da macchine diverse) e che tutto dovrebbe essere davvero riutilizzabile ei moduli come "disconnected", il più possibile .
Che cosa è un vantaggio dell'utilizzo di proprietà di dipendenza in vista del modello? In altre parole, quale valore aggiuntivo apporta che "INotifyPropertyChanged" non offre. –
Sto cercando una buona velocità e le belle funzionalità di rilegatura che accompagnano i DP. Tieni presente che sono vincolante per i DP con XAML nella mia vista. È probabile inoltre che vi siano frequenti variazioni del valore delle proprietà. Dai riferimenti che ho trovato in precedenza, per la velocità con il binding, le DP sono la strada da percorrere. C'è anche coerenza con il resto del mio design. Tuttavia, nulla di tutto ciò va bene se viene negato da tutti quei callback in corso con modifiche separate agli oggetti Entity. –