序列化 VM 与状态类

发布于 2025-01-03 16:07:56 字数 442 浏览 0 评论 0原文

在我对事件注册感到好奇之后(您可以在这里找到 ViewModel 事件注册和ViewModel Lifetime),现在我正在考虑视图模型逻辑删除:

在逻辑删除的情况下,ViewModel 序列化是一个好方法吗? 我正在考虑不同视图模型引用同一类的情况。在 Viewmodels 序列化和反序列化的情况下,引用的类实例可能有重复的实例,不是吗?

拥有专门的状态类,其独特的目的是包含所有应用程序数据,每个视图模型从那里获取数据(我的意思是对数据的引用)并更新那里的数据,并且应用程序只考虑序列化那些专门的类,这不是更好?

任何有关此主题的经验都值得赞赏。

问候 天空G

After my wonderings on the events registration (you can find here ViewModel Event Registration and ViewModel Lifetime), now I'm thinking about viewmodel tombstoning:

In case of Tombstoning, is the ViewModel serialization a good approach ?
I'm thinking about the case in which different viewmodels have a reference to the same class. In case of Viewmodels serialization and deserialization the referenced class instance could have duplicated instance, isn't it ?

Wouldn't be better to have specialized state classes whose unique purpose in to contain all the app data, everyviewmodel get data (i mean reference to the data) from there and update the data in there and the app think only to serialize those specialized class ?

Any experience on this subject is appreciated.

Regards
SkyG

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

纵山崖 2025-01-10 16:07:56

Caliburn Micro 具有框架中内置了很多功能,允许您将视图模型或整个图形的属性保存到手机状态和应用程序设置中。您只需要创建一个类并继承自StorageHandler。

public class PivotPageModelStorage : StorageHandler<PivotPageViewModel> 
{  
    public override void Configure() 
    {  
        this.ActiveItemIndex().InPhoneState().RestoreAfterViewLoad();  
    }  
}  

以及您发布的其他问题。 CM 有一个很好的方法来处理手机上的强制视图优先方法。它允许您通过指定虚拟机进行页面导航,它将处理其余的事情。作为奖励,如果您指定参数来传递 CM 会将它们从查询字符串中提取出来并填充目标 VM 上的属性。

public void GotoPageTwo() 
{  
    navigationService.UriFor<PivotPageViewModel>().WithParam(x => x.NumberOfTabs, 5).Navigate();  
}   

Caliburn Micro has a lot of this built in to the framwork allowing you to save properties of a view model or the entire graph to both phone state and app settings. You just need to create a class and inherit from StorageHandler.

public class PivotPageModelStorage : StorageHandler<PivotPageViewModel> 
{  
    public override void Configure() 
    {  
        this.ActiveItemIndex().InPhoneState().RestoreAfterViewLoad();  
    }  
}  

And to your other posted question. CM has a nice way of handling the forced view first approach on the phone. It allows you to do page navigation by specifying the VM and it will handle the rest. And as a bonus, if you specify parameters to pass CM will pull them off the query string and populate properties on the target VM.

public void GotoPageTwo() 
{  
    navigationService.UriFor<PivotPageViewModel>().WithParam(x => x.NumberOfTabs, 5).Navigate();  
}   
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文