在ListBoxView中获取对象以显示不同的字符串?
如果我用对象填充一个ListBoxView,那么将为每个对象显示的文本将是由ToString()函数生成的文本。假设我想在某些情况下使用ToString(),在其他情况下使用GetSpecialString()。在两者之间切换的最佳方式是什么?在ListBoxView中获取对象以显示不同的字符串?
我应该有不同的ToString()方法相同的基类两个不同的对象,或者是有办法,我可以同时在同一个类中的toString()和GetSpecialString()方法?
你可以做一个类包装您的视图模型,它由条件返回不同的字符串:
class ViewModelListItem {
public ViewModelListItem(MyObject item) {
this.Item = item;
}
public MyObject Item {
get;
private set;
}
public override ToString() {
// to do: add your logic here
if (...)
return "case A";
else
return "Case B";
}
}
然后,只需填写您的ListView这样的项目。
如果ToString()
和GetSpecialString()
之间的选择是隐瞒的,只需在要上课的课程中覆盖ToString()
即可。
我认为这是一种糟糕的做法,将后端与视图模型联合起来 –
我正在讨论在数据模型上过滤字符串,所以调用ListBox的Ite.ToString()将通过生成所需的字符串来调用适当的覆盖。 OOP优雅的解决方案,由我。 – Tigran
有ListBox或ListView,没有ListBoxView。除非使用自定义绘制,否则ListBox始终使用ToString(),但没有选项可以更改该选项。无论你使用什么逻辑都应该放在你添加对象的类中。在他们的ToString覆盖。 –