2010-11-26 6 views
1

カスタムオブジェクトのリストから抽出した文字列のリストにComboBoxコントロールをバインドしようとしています。リストの個別のプロパティ値の動的リストを取得するにはどうすればよいですか?

public class Operation 
{ 
    public DateTime ValueDate { get; set; } 
    public int Amount { get; set; } 
    public string Category { get; set; } 
} 

をすでにリスト内の既存の異なるカテゴリのリストへの入力新しい操作のカテゴリーに使用コンボボックスをバインドされて私は何をしようとしている:ここで

は、私が使用しているオブジェクトですオペレーションの

例:オペレーションの

リスト: "ホーム"、 "エンターテイメント":コンボボックスのオートコンプリートリストで利用可能

{04/12/2010, 100, "Home"} 
{05/12/2010, 100, "Home"} 
{05/12/2010, 200, "Entertainment"} 

現在、リストにある使用可能なカテゴリの静的リストを取得できますが、既存のリストに新しい操作を追加するとリストが更新されません。

+0

あなたが問題を解決しましたか? –

+0

ええ、あなたの提案通りにアンバインドと再バインドが終了しました。 –

+0

'BindingSource'を使って作業すると、他の面白い機能もあるかもしれません。あなたが興味を持っているなら、あなたがこのオブジェクトをあなたのために働かせるように、将来の参照のためにこのクラスを見ていることをお勧めします。とにかく助けてくれてうれしい! =) –

答えて

1

リフレッシュのためにリストのバインドを解除し、再バインドする必要があります。

+0

これはまさに私が避けたいものですが、実際にこれを処理する方法は他にありませんか? –

+0

次に、 'BindingSource'を使用して' DataSource'プロパティを設定し、この 'BindingSource'をあなたの' ComboBox.DataSource'として割り当てます。完了したら、 'CurrencyManager'を使って直接作業してみてください。リフレッシュのためには、上記のオブジェクトから 'Refresh'メソッドのいずれかを使用する必要があります。 –

0

あなたはこれを行うことができます。

_combo.ItemsSource = _operationsCollection; 
_combo.DisplayMemberPath = "Category"; 
_combo.Items.Filter = Filter; 

private bool Filter(object operationObj) 
{ 
    var operation = (Operation)operationObj; 
    var first = _operationsCollection.First(p => p.Category == operation.Category); 
    return ReferenceEquals(operation, first); 
} 
関連する問題