1
私たちはTemplate10を使用してUWPアプリケーションを開発しています。アプリはコスト、ネット、税金、合計を正しく表示します。 TaxとTotalはViewModelで計算されたプロパティです。しかし、ViewModelでNetが更新されると、ViewModelではTaxとTotalが更新されますが、Viewでは更新されません。 XAML:UWPで読み取り専用の計算されたプロパティがビューで更新されない
<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; } }
我々は
DelegateCommand _SetDiscount;
public DelegateCommand SetDiscount
=> _SetDiscount ?? (_SetDiscount = new DelegateCommand(() =>
{
// for simplicity deleted calculations for the newNet
this.Net = newNet ?? 0;
},() => true));
ネット、税および合計が正しくのViewModelにネットに更新されている編集のViewModelでコマンドを持っています。ネットはビューで正しく更新されます。ビューでTaxとTotalが更新されないのはなぜですか?
:あなたの
Set()
方法は、ので、あなたのNet
値の変更だけで、他の2のためのNet
セッター変更情報に追加し、表示されている(イベントにPropertyChanged を呼び出すか、似たような)RaisePropertyChanged(string)
メソッドの内部で持っています税金と合計の変更?私は 'Set(ref _Net、value);の後に' RaisePropertyChanged(nameof(Tax));を持たなければならないと思います。 RaisePropertyChanged(nameof(Total)); '。 – Romasz大きな質問@Romasz。計算されたプロパティでそれをどうやって行うのですか? ... whoops ...あなたの編集をちょうど得ました。 – Vague
私は最初のコメントを編集しました。プロパティの変更を行うpublic/protected/internalメソッドか、 'Set()'のみを持っていますか? – Romasz