Załóżmy, że mam proste klasy Order, które mają TotalPrice obliczoną nieruchomość, która może być związany WPF UIINotifyPropertyChanged i obliczone nieruchomość
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; }
}
}
Czy jest to dobra praktyka, aby zadzwonić RaisePropertyChanged („TotalPrice”) w właściwości, które wpływają na obliczenia TotalPrice? Jaki jest najlepszy sposób na odświeżenie usługi TotalPrice? Inna wersja to zrobić, jest oczywiście zmieniać własności jak ta
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");
}
}
i wywołać TotalPrice = -1 zamiast this.RaisePropertyChanged ("TotalPrice"); w innych właściwościach. proszę sugerować rozwiązania lepiej
dzięki dużo
nie sądzę 'i' Ilość ItemPrice' 'powinno być odpowiedzialne za podniesienie' PropertyChanged' dla 'TotalPrice'. To zadziała, ale co by było, gdyby "ItemPrice" i "Quantity" były w innej klasie - wtedy nie byłbyś w stanie tego zrobić i musiałbyś to zrobić w inny sposób. Odpowiedziałem na to pytanie w innym pytaniu, w którym odpowiedź jest taka sama, nawet jeśli właściwości były w tej samej klasie lub były w innych klasach: http://stackoverflow.com/questions/43653750/raising-propertychanged-for- zależna właściwość-kiedy-warunkiem-własności-w-innej-klasie – Jogge