【发布时间】:2015-01-22 22:43:50
【问题描述】:
我正在将我的传统 WPF 代码隐藏应用程序迁移到 MVVM 模式。
到目前为止,我已将所有按钮处理程序移到 ModelView 中。
现在轮到执行这些功能的一些逻辑了。 由于不涉及 UI 交互,因此许多逻辑已放置在单独的类中,但逻辑的主要部分涉及运行一些任务,然后在这些阶段更新 UI,包括从后台工作人员更新提供的进度条。
我考虑将这个逻辑放入模型中,但似乎很难从模型中更新 UI(视图),所以打算放入 ViewModel。
这是个坏主意吗?如果有,为什么?
如果这个逻辑真的应该放在模型中,我应该如何更新 UI - 这些是该逻辑中的一些现有功能:
//if task is run update UI:
txtCurrentStatus.Text = "Preparing job...";
progressBar.IsIndeterminate = true;
progressBar.Value = 0;
txtPercentage.Text = "0%";
//When progress updates from reading a log, update progress bar
txtPercentage.Text = (percentOutput) + "%";
progressBar.Value = Convert.ToDouble(percentOutput);
【问题讨论】:
-
不确定这是否真的回答了我的问题,不仅仅是进度条的问题。
-
该链接显示了如何在 ViewModel 中使用后台工作人员更新进度条的示例,还显示了如何使用绑定更新视图的示例。如果您问是否可以将逻辑放入模型中,您会得到不同的意见。就我个人而言,我喜欢将我的模型保持为简单的 POCO。
-
感谢您的 cmets。所以在你看来,你的程序逻辑在 ViewModel 中,而 Model 只是 data/get/setter?
-
对于一个非常简单的一次性程序,我可能会这样做。但通常我在服务类中有我的业务逻辑,这些是使用 DI 提供给视图模型的。