我是新手。 我正在尝试使用MVVM构建WPF应用程序。到目前为止,我已将视图模型属性绑定到我的视图中。很干净,很好。没有代码。
我的业务逻辑是根据用户输入启动一个或多个批处理。后台进程将依次更新视图的进程条和/或文本块的状态。
我的问题是 MVVM最多的方法是什么? 我应该将批处理代码直接放在我的viewmodel类中吗?如果是,我的viewmodel类看起来很大(数千行)
或者我应该在BusinessLogic文件夹(图层)中创建一个单独的类来容纳批处理逻辑?如果是这样,我如何在业务逻辑类中引用输入/输出的viewmodel(UI)属性?只是将这些属性作为参数传递给业务逻辑类/方法?如果是这样,我看起来必须传递很多属性作为参数。这是常见的MVVM方式吗?
请指导我正确的方向。 谢谢,
答案 0 :(得分:0)
处理逻辑不应该进入视图模型,但是视图模型将“知道”如何启动进程,可能是通过实例化某个组件并在其上调用方法,传递用户指定的任何参数在用户界面。
执行处理的组件可以发出状态事件(消息,完成百分比或两者)。视图模型可以订阅这些事件(并在处理完成时取消订阅),并相应地更新其属性。
例如,您可能具有如下视图模型属性:
public string StatusMessage
{
get { return _statusMessage; }
set
{
_statusMessage = value;
RaisePropertyChanged("StatusMessage"); // you need to implement INotifyPropertyChanged
}
}
执行处理的组件可能会以10%的完成时间间隔发出事件,并在发生错误时发出另一个事件。您可以在视图模型中订阅这些事件,并将StatusMessage属性设置为“处理 - 30%完成”或“由于超时而处理失败”之类的内容。