如何从单独的类方法引用viewmodel属性

时间:2013-05-28 22:28:11

标签: wpf c#-4.0 mvvm

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

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

我的问题是 MVVM最多的方法是什么? 我应该将批处理代码直接放在我的viewmodel类中吗?如果是,我的viewmodel类看起来很大(数千行)

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

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

1 个答案:

答案 0 :(得分:0)

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

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

例如,您可能具有如下视图模型属性:

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

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