控制器应该访问UI组件吗?

时间:2014-10-08 11:13:12

标签: c# winforms model-view-controller

我正在使用MVC模式处理WinForms应用程序。我应该从控制器访问UI组件,例如树视图节点吗?

我想访问一个树视图选择的节点并更改其标签和类似的东西,我应该从控制器访问它还是违反MVC的原则?

唯一令我恼火的是treenode属于Windows.Forms命名空间,而MVC透视图/表格相关组件只应在视图中使用,这就是我要问的原因。

2 个答案:

答案 0 :(得分:2)

不,您不应该控制控制器中视图的行为。您应该将数据传递给视图,视图应根据收到的数据决定进行调整。

如果要对视图中发生的事情做出反应,例如更改选定的树节点,则应将数据发送回控制器。然后,控制器可以使用您的视图可以显示的其他数据进行响应。

答案 1 :(得分:1)

通过直接调用视图,从控制器访问UI组件。想象一下,将树视图更改为其他内容,比如稍后基于Telerik的树视图,如果控制器也必须在发生这种情况时更改其代码?然而对于winforms我相信MVP将适用并且与我正在做的评论以及Stijn所说的相符。也许看看两者之间的区别。

MVC vs MVP