gpt4 book ai didi

c# - 查看和模型数据格式

转载 作者:行者123 更新时间:2023-12-03 10:28:11 24 4
gpt4 key购买 nike

如何定义要在 View 和模型中使用的数据格式?

我清楚地了解这里的 ViewModel 是什么从 Model 获取数据,将其转换(如有必要)并提供给 View(并且以相反的方向):

User <--> formatted data (converters) <--> View <--> converted data (to be used by generic View) <--> ViewModel <--> raw data <--> Model



现在我的问题是什么?我要通过 OperationProgress从模型到 View :
class OperationStep
{
string _name;
bool _isError;
int _time;
...
}

class OperationProgress
{
List<OperationStep> _steps;
OperationStep _currentStep;
// int _currentStepIndex;
int _currentStepTime;
...
}

ViewModel 转换 OperationProgress成一堆可绑定(bind)的属性( List<bool> 的错误、当前步骤名称和时间倒计时),View 使用它们(和转换器!)向用户显示进度。

我愿意创建一个专门的控件来处理进度显示,以避免相同的重复 数据转换成原始类型 在 View 模型中。

但是我不知道如何为控件定义数据格式...使用 OperationProgressView直接控制(在 ViewModel 中公开并绑定(bind))?创建 ControlProgress (专门用于控制的进度数据)?但是,如果 ViewModel 必须转换 OperationProgress 有什么好处?至 ControlProgress ?使用 ControlProgress在模型中(感觉不对)。

所以我来了。如果你们会做类似的事情(传递一堆数据,而不仅仅是 stringint ,从模型到 View 或相反方向)你会如何组织它?

最佳答案

你必须决定是否可以简单地接受 DataTemplate针对您的OperationProgress类型,或者如果您必须创建一个完整的 MVVM OperationProgress 的堆栈.这取决于数据的复杂性以及与数据的交互。

编辑:

你说 :

I am willing to create a specialized control to handle progress display, to avoid same repeatable data conversion into primitive types in ViewModels.



但据我了解,您想要的不仅仅是 Control , 但完整的 MVVM堆栈以便从 OperationProgress 转换至 ControlProgress也封装在您的新虚拟机中。

因此,您所说的“处理进度显示的专用控件”将变为 OperationProgressView ,并且“ControlProgress”将变为 OperationProgressViewModel .

关于c# - 查看和模型数据格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26911308/

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