wpf如何绑定到List

本文关键字:List 绑定 何绑定 wpf | 更新日期: 2023-09-27 18:03:06

我试图将对象列表绑定到DataGrid,但得到了错误的值:对象类:

public class Attribute
{
    public Attribute()
    {
    }
    private string _name;
    public string name
    {
        get { return _name; }
        set { _name = value; }
    }

    private List<Value> _valueList = new List<Value>();
    public List<Value> ValueList
    {
        get { return _valueList; }
        set { _valueList = value; }
    }
}
public class Value
{
    private string _value;
    public string value
    {
        get { return _value; }
        set { _value = value; }
    }
    public override string ToString()
    {
        return _value.ToString();
    }
}

我有一个对象列表:List<Attribute> attributes

attributeDataGrid.ItemsSource = attributes;

当我绑定时,我得到一个名称列正确的网格但是"ValueList"显示为"(Collection("而不是字符串。。。

我应该如何绑定列表?

wpf如何绑定到List

Value中的overriden ToString方法未被调用,因为WPF在第二列中显示ValueList的内容,即显示ValueList.ToString()。你希望在第二栏看到什么?以逗号分隔的ValueList中的值列表?

尝试以下对我有效的方法。

加载方法写下代码

Attribute atr = new Attribute();
atr.ValueList.Add(new Value() { value = "One" });
atr.ValueList.Add(new Value() { value = "Two" });
atr.ValueList.Add(new Value() { value = "Three" });
atr.ValueList.Add(new Value() { value = "Four" });
dataGrid.DataContext = atr.ValueList;

在XAML文件上尝试低于

    <DataGrid x:Name="dataGrid" AutoGenerateColumns="False" ItemsSource="{Binding}" >
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding value}" />
        </DataGrid.Columns>
    </DataGrid>

希望这个代码片段能对你有所帮助。