首页 / C# / c# – 属性不可观察时绑定
c# – 属性不可观察时绑定
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 属性不可观察时绑定,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1379字,纯文字阅读大概需要2分钟。
内容图文
![c# – 属性不可观察时绑定](/upload/InfoBanner/zyjiaocheng/778/cc18ce7602414fdbbe7c1c26cbad5496.jpg)
当一个对象的list属性不可观察时,是否有最佳实践方法来绑定它?例如,如果我们有:
public class Band
{
public string Name { get; set; }
public List<Musician> Members { get; private set; }
// other properties here
}
如果我的视图模型具有Band属性,并且我希望我的UI绑定到Members属性,那么如何在UI上显示Members属性的更新?成员是不可观察的.
目前的想法是创建一个DTO,它是Band类的精确副本,但是使Members成为ObservableCollection.然后UI将绑定到此DTO.在视图模型关闭之前,它会将DTO映射回适当的Band类.这似乎有点开销.有没有更好的办法?
编辑 – 另一种选择
我刚与某人讨论了这件事.我们的想法是在视图模型上添加一个ObservableCollection属性.然后,在视图模型的构造函数中,使用实体填充ObservableCollection.用户完成编辑后,使用更新的ObservableCollection重置实体上的List.
解决方法:
如您所述,您可以使用ObservableCollection.您还可以使用BindingList.
如果你不想走那条路,我看到的另一个选择是让Band实现INotifyPropertyChanged然后用你的Members属性名调用PropertyChanged.这将告诉消费控件列表已更新并刷新自己.
与该路线一致的问题是,尝试计算何时调用PropertyChanged事件可能比仅仅将集合更改为ObservableCollection< T>更痛苦.或BindingList< T>.
最后一个选项是每次认为它更改时重新绑定集合,或者如果控件支持它,请调用可用的Refresh方法.某处某处必须告诉控件该集合已更改,因为它们不会定期检查.
因为您将其标记为MVVM,所以您的View应该具有BandViewModel和MemberViewModel的ObservableCollection. ViewModel中的所有内容都应该是可绑定的,并在发生更改时发送通知.
内容总结
以上是互联网集市为您收集整理的c# – 属性不可观察时绑定全部内容,希望文章能够帮你解决c# – 属性不可观察时绑定所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。