WPF结合自定义对象列表框

问题描述:

的列表你好,我想自定义对象的列表绑定到WPF列表框。 我有下面的代码:WPF结合自定义对象列表框

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; 
    } 
} 

最初的名单显示不如预期,但如果新项目添加到列表(或删除)列表不更新。

+4

使用'ObservableCollection 用户',你应该没问题。 – Sinatr

+0

是List动态或静态? –

+0

为什么'this.listBox.DataContext =用户;'?这没有任何用处。十分钟的阅读文档可以让你将任意值赋予随机属性两天以上。 –

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