Mvvm 在UWP中,只读计算属性未在视图中更新
我们正在使用Template10开发UWP应用程序。该应用程序正确显示成本、净额、税金和总额。Tax和Total是ViewModel中的计算属性。但是,当在ViewModel中更新净值时,税收和总额在ViewModel中更新,但在视图中不更新。Xaml: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
<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));