将组合框绑定到ArrayList WPF C#
问题描述:
是否可以将组合框绑定到持有对象的ArrayList?我见过这样的例子很多,但在直接使用一个ArrayList什么将组合框绑定到ArrayList WPF C#
我的对象类具有ID,名称,价值,文字,数据等
obj1 = new Object()
obj2 = new Object()
obj3 = new Object()
ArrayList() list = new ArrayList()
list.Add(obj1)
list.Add(obj2)
list.Add(obj3)
我这个设置为ComboBox.ItemsSource
combo.ItemSource = list
我的组合框包含此XAML
DisplayMemberPath="{Binding Path=Id}"
这似乎工作,但它显示整个对象作为一个“字符串”,而不是只是Id
这是为什么,我该如何解决它?
答
DisplayMemberPath
意思是包含要显示的属性名称的字符串。
这是告诉组合框,从而使得各项目作为
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DisplayMemberPathValue}" />
</DataTemplate>
</ComboBox.ItemTemplate>
例如一个快捷方式,如果设置设置
DisplayMemberPath = "Id"
然后,它会呈现为
<TextBlock Text="{Binding Id}" />
什么您现在正告诉WPF从获得DisplayMemberPath
财产,这很可能是无效的,所以你应该只是得到一个绑定错误。
答
您只需要将对象类型更改为复杂类型。
system.object没有id属性。所以它不能渲染。
,如果你的项目源是复合型的,而不是仅仅int或字符串,你需要做的是数组列表:
public class Person
{
public int Id {get;set;}
public string Name {get;set;}
}
如果您改变了您的类型绑定,都应该开始正常工作。
你认为它被显示为什么?你的实际模型类是什么样的?如果你不告诉它,它只会在你的对象上调用'ToString()'方法,并将对象类型作为一个字符串返回。 – 2014-10-07 20:34:00
您尝试设置DisplayMemberPath并...什么? – Gigi 2014-10-07 20:39:15
布兰德先生已经确定了我所看到的,它正在调用我的.ToString()方法。有没有一种方法可以从对象中显示ID? – chongo2002 2014-10-08 01:43:37