在MVP
应用程序中,如果我想在公共属性中封装ListBox
,以便我可以通过与演示者的接口公开该属性。我应该能够通过这个公共属性更新ListBox
中的项目。我已经尝试过几种方法来做到这一点
public BindingSource Permission
{
get { return lstGivenPermissions.DataSource; } // Casting error
set { lstGivenPermissions.DataSource = value; }
}
我尝试了多种类型的属性,例如IEnumereble<>
,List<>
等,但是setter或geter总是显示出一个转换错误。
一种选择是为get
和set
设置单独的属性。
public ListBox gettingPermission
{
get {return lstGivenPermissions; }
}
public BindingSource Permission
{
set { lstGivenPermissions.DataSource = value; }
}
在这种情况下是否可以使用单个属性,否则有两个属性是可接受的解决方案?
编辑:我使用MVP模式,我的要求是我的演示者通过界面与视图交谈。因此,如果我希望我的一个演示者访问View中的控制器(如文本框),那么这些控制器应该封装在属性中。这样我就可以通过界面公开了。
答案 0 :(得分:0)
这解决了我的问题。
public List<string> GivenPermission
{
get { return lstGivenPermissions.Items.Cast<string>().ToList(); }
set { lstGivenPermissions.DataSource = value; }
}