我正在使用MVC模式处理WinForms应用程序。我应该从控制器访问UI组件,例如树视图节点吗?
我想访问一个树视图选择的节点并更改其标签和类似的东西,我应该从控制器访问它还是违反MVC的原则?
唯一令我恼火的是treenode属于Windows.Forms
命名空间,而MVC透视图/表格相关组件只应在视图中使用,这就是我要问的原因。
答案 0 :(得分:2)
不,您不应该控制控制器中视图的行为。您应该将数据传递给视图,视图应根据收到的数据决定进行调整。
如果要对视图中发生的事情做出反应,例如更改选定的树节点,则应将数据发送回控制器。然后,控制器可以使用您的视图可以显示的其他数据进行响应。
答案 1 :(得分:1)
通过直接调用视图,从控制器访问UI组件。想象一下,将树视图更改为其他内容,比如稍后基于Telerik的树视图,如果控制器也必须在发生这种情况时更改其代码?然而对于winforms我相信MVP将适用并且与我正在做的评论以及Stijn所说的相符。也许看看两者之间的区别。