0

假设我想实现被动视图设计模式。我有一个包含列表框的视图(将来我可能会与列表视图或其他东西交换)。现在,使用被动视图应该使视图尽可能地愚蠢。可以说我想更改选择。我将把这个逻辑放在演示器中,因此我在视图界面中添加一个属性来获取和设置视图列表框的 SelectedIndex 属性。但是,如果我将来想用列表视图交换列表框,我就有麻烦了,因为列表视图没有 SelectedIndex 属性。然后我是否在视图中实现一些逻辑(基本上使它不那么愚蠢),例如:

public int SelectedIndex
{
    get
    {
        if (myListView.SelectedIndices.Count > 0)
        {
            return myListView.SelectedIndices[0];
        }
        return -1;
    }
}

或者我是否在视图和演示者之间放置了某种适配器。什么是最合乎逻辑的方法?

4

2 回答 2

1

是的,你可以这样做。诸如 Passive View、MVVM、MVC、MVP 之类的 UI 模式是关于如何将表示与应用程序核心逻辑分离以获得可以以最小的麻烦进行维护和扩展的松散耦合应用程序的一般准则 (它们不是严格的规则) 。现在,由于在您的案例中使用列表视图或列表框是特定于演示文稿的,您可以在演示文稿中放置逻辑来处理这个问题,而不会破坏 UI 和应用程序核心之间的这种隔离。

于 2013-06-18T15:25:32.193 回答
1

我认为你需要变得更抽象。选定的索引可能被认为与特定 UI 控件的耦合过于紧密。正如您正确指出的那样,该模式试图避免这种情况,以便可以无缝交换视图。因此,我建议视图具有表示所选内容的属性,可以是字符串或更复杂的类,以便特定视图实现可以隐藏从抽象到具体的实际转换。这样,演示者只处理对其有意义的事情,而不是特定 UI 控件的机制。

于 2013-06-18T20:51:37.483 回答