【发布时间】:2012-06-14 06:57:08
【问题描述】:
我正在尝试为我的 WinForms 应用程序实现 MVVM(模型视图视图模型)模式。我正在使用 C# 2005。
我的应用程序有一个带有 2 个多行文本框和 3 个按钮的 MainForm(视图)。第一个文本框的目的是在单击按钮时显示应用程序正在执行的操作的运行评论。我继续向 TextBox 添加行以更新用户正在发生的事情。第二个文本框的目的是向用户更新任何错误情况、冲突、重复值;简而言之,用户需要查看的任何内容。它将每条消息分类为 INFO 或 WARNING 或 ERROR。 3 个按钮中的每一个都执行一个操作,并不断更新 2 个文本框。
我创建了一个 MainFormViewModel 类。
第一个问题: 当用户单击 MainForm 中的按钮时,我必须清除 2 个文本框的内容,并禁用该按钮,以便在第一次操作完成之前无法再次单击它。我应该直接在 MainForm 中更新这个文本框和按钮,还是应该以某种方式使用 MainFormViewModel?
第二个问题: 单击按钮调用 MainFormViewModel 类上的方法。在调用方法之前和调用方法之后,我想在第一个文本框中显示一条消息,例如“操作 A 开始/结束”。我通过调用具有 Log 方法的 Common 类来将消息记录到 TextBox 或文件或两者兼而有之。再次是否可以直接从 MainForm 执行此操作?我在事件处理程序的开始和结束处调用此日志记录方法。
第三个问题: 如何将错误消息从 ViewModel 传播回 View?我创建了一个自定义异常类“TbtException”。那么我是否必须在每个按钮中编写 2 个 catch 块,一个用于 TbtException,另一个用于遗传异常类?
谢谢。
【问题讨论】:
标签: c# design-patterns