【发布时间】:2019-04-28 15:29:31
【问题描述】:
我很难理解如何使用 MVVM Light 绑定到视图模型中暴露模型的嵌套属性。
我有以下设置,当服务更新地址时,“StreetAddress”组件没有更新:
地址模型:
public class Address : ObservableObject
{
private uint _streetNumber;
public uint StreetNumber
{
get
{
return _streetNumber;
}
set
{
Set(ref _address, value, nameof(StreetNumber));
}
}
}
人物模型:
public class Person : ObservableObject
{
private Address _address;
public Address Address
{
get
{
return _address;
}
set
{
Set(ref _address, value, nameof(Address));
}
}
}
QueryPerson 视图模型:
public class QueryPersonViewModel : ViewModelBase
{
public Person QueriedPerson { get; set; }
public Address QueriedPersonAddress
{
get
{
return QueriedPerson.Address
}
}
...
}
QueryPerson 查看sn-p:
<Grid DataContext="{Binding QueriedPersonAddress}">
...
<TextBox Text="{Binding StreetNumber, Mode=OneWay}" />
</Grid>
上述模式是否符合 MVVM 最佳实践?有没有更好的方法从视图绑定到嵌套属性?如果调用地址设置器,TextBox 文本不更新的原因是什么?
【问题讨论】:
标签: c# mvvm mvvm-light