Nous développons une application UWP à l'aide de Template10. L'application affiche Coût, Net, Taxe et Total correctement. Tax et Total sont des propriétés calculées dans ViewModel. Cependant, lorsque Net est mis à jour dans ViewModel, Tax et Total sont mis à jour dans ViewModel mais pas mis à jour dans la vue. Le Xaml:Dans UWP, les propriétés calculées en lecture seule ne sont pas mises à jour dans la vue
<TextBlock
Text="{x:Bind ViewModel.Net,Mode=OneWay}"
/>
<TextBlock
Text="{x:Bind ViewModel.Tax,Mode=OneWay}"
/>
<TextBlock
Text="{x:Bind ViewModel.Total,Mode=OneWay}"
/>
ViewModel:
public class ViewModel : ViewModelBase
{
decimal? _Net = default(decimal?);
public decimal? Net
{
get
{
return _Net;
}
set
{
if (value == 0) value = null;
Set(ref _Net, value);
}
}
decimal? _TaxRate = default(decimal?);
public decimal? TaxRate { get { return _TaxRate; } set { Set(ref _TaxRate, value); } }
public decimal? Tax
{
get
{
return TaxRate/100 * Net;
}
}
public decimal? Total { get { return Net + Tax; } }
Nous avons une commande dans le ViewModel qui édite Net
DelegateCommand _SetDiscount;
public DelegateCommand SetDiscount
=> _SetDiscount ?? (_SetDiscount = new DelegateCommand(() =>
{
// for simplicity deleted calculations for the newNet
this.Net = newNet ?? 0;
},() => true));
net, impôt et Total sont correctement mis à jour dans le ViewModel. Net est correctement mis à jour dans la vue. Pourquoi Tax et Total ne sont-ils pas mis à jour dans la vue?
Où êtes-vous bien levez changer pour Taxe et Total? Je pense qu'après 'Set (ref _Net, value);' vous devriez avoir 'RaisePropertyChanged (nameof (Tax)); RaisePropertyChanged (nameof (Total)); '. – Romasz
Bonne question @Romasz. Comment puis-je faire cela avec des propriétés calculées? ... whoops ... juste eu votre édition. – Vague
J'ai modifié le premier commentaire. Avez-vous une méthode publique/protégée/interne responsable du changement de propriété, ou seulement 'Set()'? – Romasz