Mvvm 在UWP中,只读计算属性未在视图中更新

Mvvm 在UWP中,只读计算属性未在视图中更新,mvvm,uwp,template10,Mvvm,Uwp,Template10,我们正在使用Template10开发UWP应用程序。该应用程序正确显示成本、净额、税金和总额。Tax和Total是ViewModel中的计算属性。但是,当在ViewModel中更新净值时,税收和总额在ViewModel中更新,但在视图中不更新。Xaml: <TextBlock Text="{x:Bind ViewModel.Net,Mode=OneWay}" /> <TextBlock Text="{x:Bind ViewModel.Tax,Mode=One

我们正在使用Template10开发UWP应用程序。该应用程序正确显示成本、净额、税金和总额。Tax和Total是ViewModel中的计算属性。但是,当在ViewModel中更新净值时,税收和总额在ViewModel中更新,但在视图中不更新。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中有一个编辑网络的命令

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?

视图中没有更新Tax和Total,因为您没有将更改通知它。您的
Set()
方法内部有一个
RaisePropertyChanged(string)
方法(或类似的调用PropertyChanged事件的方法),因此将显示您的
Net
值更改,只需为另外两个添加
Net
setter更改信息:

公共十进制?网
{
得到
{
净收益率;
}
设置
{
如果(值==0)值=null;
设置(参考净值);
RaisePropertyChanged(名称(总数));
RaiseProperty变更(名称(税务));
}
}

您打算在哪里增加物业税和总价?我认为在
Set(ref\u Net,value)之后您应该有
raiseproperty更改(名称(税));RaisePropertyChanged(名称(总数))。好问题@Romasz。如何使用计算属性来实现这一点。。。哎呀。。。刚刚收到你的编辑。我已经编辑了第一条评论。您是否有负责引发属性更改的公共/受保护/内部方法,或者只有
Set()
?该方法有效,谢谢@Romasz。想回答一下吗?
DelegateCommand _SetDiscount;
public DelegateCommand SetDiscount
       => _SetDiscount ?? (_SetDiscount = new DelegateCommand(() =>
       {
    // for simplicity deleted calculations for the newNet
           this.Net = newNet ?? 0;
}, () => true));