2014-06-08 68 views
0

MVP應用程序中,如果我想在公共屬性中封裝ListBox,以便我可以通過接口將該屬性公開給演示者。我應該可以通過這個公共屬性更新ListBox中的項目。我試過幾種方法可以做到這在公共屬性中封裝列表框

public BindingSource Permission 
    { 
     get { return lstGivenPermissions.DataSource; } // Casting error 
     set { lstGivenPermissions.DataSource = value; } 
    } 

我試了幾種類型的財產像IEnumereble<>List<>等,但往往不是制定者或geter顯示鑄造錯誤。

一種選擇是爲getset分別設置屬性。

public ListBox gettingPermission 
    { 
     get {return lstGivenPermissions; } 
    } 

    public BindingSource Permission 
    { 
     set { lstGivenPermissions.DataSource = value; } 
    } 

在這種情況下可以使用單個屬性還是有兩個屬性是可接受的解決方案?

編輯:我使用MVP模式,我的要求是我的演示者正在通過接口與視圖交談。因此,如果我想讓演示者之一訪問視圖中的控制器(如文本框),則應將這些控制器封裝在屬性中。這樣我就可以通過界面公開。

+1

爲什麼你希望'ListBox'通過公共屬性可變?如果你這樣做,你正在破壞封裝。 –

+0

其實我想要做的是我的演示文稿類需要訪問/更新視圖中列表框中的內容(項目)。 – CAD

+0

演示文稿類通過界面與視圖進行交談。所以只有視圖中的屬性才能被暴露! – CAD

回答

0

這解決了我的問題。

public List<string> GivenPermission 
    { 
     get { return lstGivenPermissions.Items.Cast<string>().ToList(); } 
     set { lstGivenPermissions.DataSource = value; } 
    }