2017-04-20 10 views
-1

こんにちは私はカスタムオブジェクトのリストをWPFのListBoxにバインドしたいと考えています。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> 

そして、Userクラス: 私は次のコードを持っている

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 users」を使用してください。あなたはうまくいくはずです。 – Sinatr

+0

リストは動的か静的ですか? –

+0

なぜ 'this.listBox.DataContext = users;'?それはどんな目的にも役立たない。ドキュメンテーションを読んで10分であれば、ランダムなプロパティに任意の値を割り当てるのは2日以上です。 –

答えて

0

SinatrはObservableCollectionを使用していると指摘し、期待通りに機能しました。おかげさまで

関連する問題