Binding to nested property only showing first item in list

蹲街弑〆低调 提交于 2019-12-06 12:10:34
har07

It seems that setting DisplayMember to "NestedItem.Name" only displaying NestedItem.Name property of SelectedItem -I tested this, if SelectedItem changed, the Name displayed also changed accordingly-. The easiest work around is to add another property for DisplayMember :

public class MyItem
{
    public NestedItem NestedItem { get; set; }
    public int Number { get; set; }
    public String NestedItemName { get { return NestedItem.Name; } }
}

Then set the DisplayMember :

listBox1.DisplayMember   = "NestedItemName";

Not elegant, but still easier than using property descriptior as suggested here or here.

UPDATE :

Following is a quick test I did. Add a button to toggle listBox1's DisplayMember. Onclick event handler :

listBox1.DisplayMember = (listBox1.DisplayMember == "Number") ? "NestedItem.Name" : "Number";

when DisplayMember set to "Number" you can choose any item in list -not necessarily the first item-, then click the button again. You'll see that SelectedItem's NestedItem.Name displayed.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!