0

我是新手。我正在尝试使用 MVVM 构建 WPF 应用程序。到目前为止,我已将我的视图模型属性绑定到我的视图。相当干净漂亮。后面没有代码。

我的业务逻辑是根据用户输入启动一个或多个批处理。后台进程将依次更新视图的进程栏和/或文本块上的状态。

我的问题是什么是最 MVVM 方式来做到这一点?我应该将批处理代码直接放在我的视图模型类中吗?如果是,我的视图模型类看起来很大(数千行)

或者我应该在 BusinessLogic 文件夹(层)中创建一个单独的类来容纳批处理逻辑?如果是这样,我如何在业务逻辑类中为输入/输出引用视图模型 (UI) 属性?只需将这些属性作为参数传递给业务逻辑类/方法?如果是这样,看起来我必须将很多属性作为参数传递。这是常见的 MVVM 方式吗?

请指导我正确的方向。谢谢,

4

1 回答 1

0

处理逻辑不应该进入视图模型,但视图模型将“知道”如何启动该过程,可能通过实例化一些组件并在其上调用方法,传递用户在 UI 中指定的任何参数.

执行处理的组件可以发出状态事件(消息、完成百分比或两者)。视图模型可以订阅这些事件(并在处理完成时取消订阅),并相应地更新其属性。

例如,您可能有这样的视图模型属性:

public string StatusMessage
 {
    get { return _statusMessage; }
    set 
    {
        _statusMessage = value;
        RaisePropertyChanged("StatusMessage"); // you need to implement INotifyPropertyChanged
    }
}

执行处理的组件可能会以 10% 的完成间隔发出一个事件,并在发生错误时发出另一个事件。您可以在视图模型中订阅这些事件,并将 StatusMessage 属性设置为“处理中 - 30% 完成”或“处理因超时而失败”。

于 2013-05-28T22:39:04.340 回答