Wpf自定义对象的绑定列表到ListBox

时间:2017-04-20 15:24:35

标签: c# wpf data-binding

您好我想将自定义对象列表绑定到WPF中的ListBox。 我有下一个代码:

private List<User> users = new List<User>();

public MainWindow()
{
    InitializeComponent();

    this.users = User.GetAllUsersFromFile();

    this.listBox.DataContext = users;
    this.listBox.ItemsSource = users;
}

和XML:

<ListBox x:Name="listBox" ItemsSource="{Binding}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>    
</ListBox>

用户类:

private string name;
private byte[] avatar;

public string Name
{
    get
    {
        return this.name;
    }
    set
    {
        if (value.Any(c => c == ' '))
            throw new Exception("Invalid name. (It cannot contain spaces)");

        this.name = value;
    }
}

public byte[] Avatar
{
    get
    {
        return this.avatar;
    }
    set
    {
        this.avatar = value;
    }
}

初始列表按预期显示,但如果新项目添加到列表中(或已删除),则列表不会更新。

1 个答案:

答案 0 :(得分:0)

正如Sinatr指出的那样,我使用了ObservableCollection,它按预期工作。 感谢。