我有以下问题:当我想要分开绑定ViewModel中的一些元素时,逻辑的预期场景是什么。我的意思是说... http://slodge.blogspot.co.uk/2013/04/n3-kitten-cells-on-iphone-n1-days-of.html
提供的示例中有一个“小猫”类 - 这只是一个常见的“DTO”对象。 还有一个包含那些对象列表的modelview类:
public List<Kitten> Kittens
{
get ...
set { ... RaisePropertyChanged(() => Kittens); }
}
我们可以将网格与单元格绑定(绑定到Kitten属性)。但是,如果我希望能够分别在Kitten的每个属性上激活RaisePropertyChanged怎么办?即, 如果小猫标题改变了,那么在KittenTitle属性上调用RaisePropertyChanged(并相应地只更改绑定的单元格值而不是整个列表刷新)?(
小猫的样本显然是原始的,不需要这样的实现,但如果不是小猫,我会有一个类似于Facebook App菜单面板的列表,其中有菜单项(数量可以变化)和那些项目可以有“Notifications Count”标签(或不能),所以,如何只重新刷新(由“Kitten”实例中的相关属性更改),而不是完全刷新列表,而不是完全刷新列表? (对于我来说,这看起来像viewModel中的viewModel,但不确定如何使用MvvmCross更智能地解决它。)
谢谢!
答案 0 :(得分:2)
您可以实现嵌套的INotifyPropertyChanged
对象 - 就像在Windows绑定中一样。
因此,如果一个Kitten引发其属性更改,那么只有该小猫的UI部分才会刷新
e.g。可以写一只小猫:
public class DynamicKitten : MvxNotifyPropertyChanged // can use MvxViewModel as base class if preferred
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; RaisePropertyChanged(() => Name); }
}
}
对于某些示例 - 主要使用Linq来包装静态对象 - 请参阅:
我最喜欢的StackOverflow库之一采用这种INPC方法一直回到Json层 - 看看https://stacky.codeplex.com/SourceControl/latest#trunk/source/Stacky/Entities/Answer.cs中的所有INPC实体