4

我有以下问题:当我想单独绑定 ViewModel 中的一些元素时,逻辑的预期场景是什么。我的意思... http://slodge.blogspot.co.uk/2013/04/n3-kitten-cells-on-iphone-n1-days-of.html

提供的示例中有一个“Kitten”类 - 这只是一个常见的“DTO”对象。还有一个包含这些对象列表的模型视图类:

public List<Kitten> Kittens
{
    get ...
    set { ... RaisePropertyChanged(() => Kittens); }
}

我们可以将网格与单元格绑定(绑定到 Kitten 属性)。但是,如果我希望能够分别在 Kitten 的每个属性上激活 RaisePropertyChanged 怎么办?即,如果小猫 Title 发生了变化,那么要在 KittenTitle 属性上调用 RaisePropertyChanged (因此,只更改绑定的单元格值而不是刷新整个列表)?

带有 Kittens 的示例显然是原始的,不需要这样的实现,但是如果不是 Kittens,我会有一个类似于 Facebook 应用程序菜单面板的列表,其中有菜单项(数量可以变化)并且这些项可以有“通知计数”标签(或不能)因此,我如何启动该标签仅刷新(由“小猫”实例中的相关属性更改引起),而不是完全刷新列表?(对我来说,这看起来像是 viewModel 中的 viewModel,但不确定如何使用 MvvmCross 更智能地解决它)。

谢谢!

4

1 回答 1

3

您可以实现嵌套INotifyPropertyChanged对象 - 就像您在 Windows 绑定中所做的那样。

因此,如果一只小猫提高了它的属性,那么只有那只小猫的 UI 部分会刷新

例如小猫可以写成:

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/中的所有 INPC 实体答案.cs

于 2013-06-05T12:24:34.680 回答