在UWP中,只读的计算属性未在View中更新

时间:2017-03-03 05:48:11

标签: mvvm uwp template10

我们正在使用Template10开发一个UWP应用程序。该应用程序正确显示成本,净额,税金和总额。 Tax和Total是ViewModel中的计算属性。但是,当在ViewModel中更新Net时,Tax和Total将在ViewModel中更新,但不会在View中更新。 Xaml:

<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; } }

我们在ViewModel中有一个编辑Net

的命令
DelegateCommand _SetDiscount;
public DelegateCommand SetDiscount
       => _SetDiscount ?? (_SetDiscount = new DelegateCommand(() =>
       {
    // for simplicity deleted calculations for the newNet
           this.Net = newNet ?? 0;
}, () => true));

在ViewModel中正确更新了Net,Tax和Total。 Net在视图中正确更新。为什么税和总计未在视图中更新?

1 个答案:

答案 0 :(得分:2)

它们未在视图中更新,因为您没有通知它有关更改。您的Set()方法位于RaisePropertyChanged(string)方法内(或类似地调用 PropertyChanged 事件),因此您的Net值更改正在显示,只需添加{{1另一个的setter更改信息:

Net