Supongamos que tengo Simple clase, que tienen un TotalPrice propiedad calculada, que puede ser obligado a WPF UIINotifyPropertyChanged y propiedad calculada
public class Order : INotifyPropertyChanged
{
public decimal ItemPrice
{
get { return this.itemPrice; }
set
{
this.itemPrice = value;
this.RaisePropertyChanged("ItemPrice");
this.RaisePropertyChanged("TotalPrice");
}
}
public int Quantity
{
get { return this.quantity; }
set
{
this.quantity= value;
this.RaisePropertyChanged("Quantity");
this.RaisePropertyChanged("TotalPrice");
}
}
public decimal TotalPrice
{
get { return this.ItemPrice * this.Quantity; }
}
}
¿Es una buena práctica para llamar RaisePropertyChanged ("TotalPrice") en el propiedades que afectan al cálculo de TotalPrice? ¿Cuál es la mejor manera de actualizar la propiedad TotalPrice? La otra versión de hacer esto, por supuesto, es cambiar propiedad como esta
public decimal TotalPrice
{
get { return this.ItemPrice * this.Quantity; }
protected set
{
if(value >= 0)
throw ArgumentException("set method can be used for refresh purpose only");
}
}
y llame TotalPrice = -1 en vez de this.RaisePropertyChanged ("TotalPrice"); en otras propiedades. Por favor, sugerir soluciones mejor
Muchas gracias
No creo que '' ItemPrice' y Cantidad 'debería ser responsable de subir' PropertyChanged' para 'TotalPrice'. Esto funcionará, pero ¿qué pasaría si 'ItemPrice' y' Quantity' estuvieran en otra clase? Entonces no podrías hacer esto, y tendrías que hacer esto de otra manera. He respondido esta pregunta en otra pregunta, donde la respuesta es la misma incluso si las propiedades estaban en la misma clase o si estaban en otras clases: http://stackoverflow.com/questions/43653750/raising-propertychanged-for- a-dependent-property-when-a-prerequisite-property-in-another-class – Jogge