1

我正在研究模型视图演示者模式。到目前为止,我喜欢我所看到的,但是几乎所有的文章、网络广播、播客等。我看到、阅读或听到的倾向于处理从文本框中设置和检索简单类型,我正在努力理解如何处理具有更复杂的 UI 控件。

例如,假设我有一个 CheckedListBox。在这个 CLB 中,我想显示所有可用选项以及为给定实例选择的选项(想象一个带有 FavouriteIceCreamFlavours 列表的 Friend 类)。我可以轻松地填写列表框,但是我将如何设置哪些被选中(比如在这个朋友的后续编辑中)。此外,我将如何将这些更改保留回底层的 Friend 对象?

另一个候选者是 TreeView。假设通过右键单击电视中的一个节点,我希望用户能够删除该节点 - 将该操作返回给演示者的最佳方法是什么?

干杯,

莱尼。

(PS 我在 C# 3.5/WinForms 环境下开发)

4

1 回答 1

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
     }
}

希望这应该有效。

于 2009-06-30T13:52:20.630 回答