将组合框绑定到ArrayList WPF C#
本文关键字:ArrayList WPF 绑定 组合 | 更新日期: 2023-09-27 18:25:48
是否可以将组合框绑定到保存对象的ArrayList?我见过很多例子,但没有一个是直接使用ArrayList 的
My Object类具有属性Id、Name、Value、Text、Data等。
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从ComboBox.DataContext.Id
获取DisplayMemberPath
属性,该属性很可能是无效的,因此您应该只得到一个绑定错误。
您只需要将类型从对象更改为复杂类型。
system.object没有id属性。所以它无法呈现。
如果你的项目源是复杂类型的数组列表,而不是int或string,你需要做的是:
public class Person
{
public int Id {get;set;}
public string Name {get;set;}
}
如果您更改了类型,那么所有绑定都应该开始正常工作。