Estoy escribiendo una aplicación de escritorio en C# usando el patrón MVVM con un modelo de Entity Framework. Tiendo a usar DependencyProperties en mis máquinas virtuales y he llegado (generalmente) a preferir este sistema a implementar INotifyPropertyChanged. Me gustaría mantener las cosas consistentes. Mi máquina virtual accede a las entidades en el modelo y he logrado mantener las cosas bastante separadas: la vista no tiene ningún conocimiento de la máquina virtual, excepto los nombres de comandos y de enlace, y el modelo tiene conocimiento de la máquina virtual.Usando DependencyProperty en ViewModel con Entity Framework
Usando INotifyPropertyChanged en la VM, parece bastante fácil de actualizar las entidades del modelo:
public string Forename
{
get { return CurrentPerson.Forename; }
set
{
if (Forename != value)
{
CurrentPerson.Forename = value;
NotifyPropertyChanged("Forename");
}
}
}
... donde CurrentPerson es un objeto Person de auto-creada por el Entity Data Model. Por lo tanto, no hay ningún campo privado creado específicamente para almacenar el nombre.
Con DependencyProperties, parece que tendría que crear un DP, agregar la Propiedad predeterminada, usar GetValue y Setvalue y luego usar PropertyChangedCallback para actualizar la entidad de CurrentPerson. Llamar a una devolución de llamada en esta situación parece estar agregando sobrecarga por el hecho de ser consistente con mis otras máquinas virtuales.
La pregunta es, por tanto, si uno u otro de estos métodos es la forma en que debería hacer las cosas? En este caso, ¿debería usar DependencyProperty o INotifyPropertyChanged? Una cosa que debe señalarse es que este será potencialmente un proyecto a gran escala (con complementos y una gran cantidad de accesos de bases de datos desde diferentes máquinas) y que todo debería ser realmente reutilizable, y los módulos como "desconectados", como sea posible. .
¿Qué es un beneficio del uso de las propiedades de dependencia a la vista de modelo? En otras palabras, qué valor adicional trae 'INotifyPropertyChanged' no ofrece. –
Estoy buscando una buena velocidad y las bonitas características de encuadernación que vienen con los DP. Tenga en cuenta que estoy vinculando directamente a los DP con XAML en mi vista. También es probable que haya cambios frecuentes en el valor de la propiedad. De las referencias que he encontrado anteriormente, para la velocidad con enlace, DP son el camino a seguir. También hay consistencia con el resto de mi diseño. Sin embargo, nada de esto es bueno si es negado por todas las devoluciones de llamada que se realizan con enmiendas separadas a los objetos de la Entidad. –