我试图将WindowsForm重构为MVP模式。该应用程序是一个瓷砖编辑器。窗体有一个自定义控件,我在其中显示地图(TileDisplay)。从文件加载映射后,我调用一个名为“AdjustHScrollBar”的方法来重新调整水平滚动条到tilemap大小。我不是100%确定如何根据MVP分割方法。 首先原来没有MVP方法:澄清需要MVP模式中的演示者应该知道的内容
private void AdjustHScrollBar()
{
if (tileMap.GetWidthInPixels() > tileDisplay.Width)
{
hTileScrollBar.Visible = true;
hTileScrollBar.Minimum = 0;
hTileScrollBar.Maximum = tileMap.GetWidth();
}
else
{
hTileScrollBar.Visible = false;
}
}
这是演示使用MVP后的方法:
private void AdjustHScrollBar()
{
if (mainFormModel.TileMap.GetWidthInPixels() > mainFormView.GetTileDisplayWidth())
{
mainFormView.EnableHScrollBar(mainFormModel.TileMap.GetWidth());
}
else
{
mainFormView.DisableHScrollBar();
}
}
视图不知道主持人。我的问题是主持人是否应该知道视图的控制。在我的实现中,它不会 - 这就是GetTileDisplayWidth,EnableHScrollBar和DisableHScrollBar方法的原因。 Afaik这是正确的方式,但是如果我必须从视图中为我需要的每一个属性制作一个方法,这似乎变成了很多工作。基本上,垂直滚动条的“相同”代码用于例如(所以这6种方法可以重新调整滚动条)。
感谢您的回答。 – 2013-03-23 22:35:34
我在演示者中这样做的原因是它取决于模型(地图大小)。 – 2013-03-23 22:44:14