如何定义要在 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 模型中。
但是我不知道如何为控件定义数据格式...使用
OperationProgress
在 View
直接控制(在 ViewModel 中公开并绑定(bind))?创建 ControlProgress
(专门用于控制的进度数据)?但是,如果 ViewModel 必须转换 OperationProgress
有什么好处?至ControlProgress
?使用 ControlProgress
在模型中(感觉不对)。所以我来了。如果你们会做类似的事情(传递一堆数据,而不仅仅是
string
或 int
,从模型到 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/