我正在调查Model View Presenter模式。到目前为止,我喜欢我所看到的,但几乎所有的文章,网络广播,播客等等。我看过,读过或听过的都倾向于处理设置和从文本框中检索简单类型,我很难理解如何处理更复杂的UI控件。
例如,假设我有一个CheckedListBox。在这个CLB中,我想显示所有可用的选项和为给定实例选择的选项(想象一个带有FavouriteIceCreamFlavours列表的Friend类)。我可以轻松地填充列表框,但是我如何设置选择哪个(比如在这个朋友的后续编辑中)。另外,我如何将这些更改持久保存回底层的Friend对象?
另一个候选人将是TreeView。假设通过右键单击电视中的节点,我希望用户能够删除该节点 - 将该操作传达回演示者的最佳方法是什么?
干杯,
莱尼。
(PS我正在C#3.5 / WinForms环境中开发)
答案 0 :(得分:0)
我也只是这个MVP的新手。但是我会去做我会做的事情。我对树视图的处理只是处理视图中的删除,因为它只是UI事件,但如果您使用某种数据库逻辑或其他东西,那么您可以这样做。
我会:
演示者界面:
Interface IPresenter
{
bool DeleteItem(string itemName);
}
查看课程:
class View : IView
{
IPresenter presenter = new Presenter(this);
void DeleteButtonClick(//SomeEventArgs)
{
bool vaild = this.presentor.DeleteItem(//Get the selected item);
if (vaild)
{ //Delete the item from the tree view }
}
}
演示者课程:
class Presenter : IPresenter
{
public bool DeleteItem(string itemName)
{
// Check for valid delete.
return true or false
}
}
希望这应该有用。