gpt4 book ai didi

mobile - MvvmCross:另一个 ViewModel 场景中的 ViewModel

转载 作者:行者123 更新时间:2023-12-02 05:57:33 25 4
gpt4 key购买 nike

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

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

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

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

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

谢谢!

最佳答案

您可以实现嵌套的 INotifyPropertyChanged 对象 - 与 Windows 绑定(bind)中的操作完全一样。

因此,如果一只小猫引发其属性更改,则只有该小猫的 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/Answer.cs 中的所有 INPC 实体

关于mobile - MvvmCross:另一个 ViewModel 场景中的 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16939700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com