1

私のSilverlight4アプリケーションには、2つの異なるリストボックスにデータバインドするObservableCollectionがあります。MyClass-Objectのコンテンツを表示するlistboxitems。ObservableCollectionにアイテムを追加すると、新しいアイテムが両方のリストボックスに正しく表示されます。

バインディングモードを双方向に設定したので、listboxitemsを編集するとモデルが自動的に更新されます。これは今のところ機能します。私の問題は、他のリストボックスの内容が更新されたモデルで更新されないことです。新しいアイテムを追加すると、他のリストボックスに正しく表示されますが、コンテンツの更新(チェックした内容)は表示されません。

達成するためのアイデア:1つのリストボックスのコンテンツを更新すると、他のリストボックスのコンテンツが自動的に更新されます。

よろしくお願いします、
フランク

4

2 に答える 2

2

INotifyPropertyChangedあなたのクラスが実装する必要があり、あなたのプロパティがPropertyChanged彼らのセッターにイベントを投げる必要があるとルークが言ったことを拡張するために。

public class MyClass : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged; // This may be named wrong

    private string _myString = null;

    public string MyString
    {
        get { return _myString; }
        set
        {
            if(value == _myString)
                return;
            _myString = value;
            var eh = PropertyChanged;
            if(eh != null)
                eh(this, new PropertyChangedEventArgs("MyString"));
        }
    }
}

MyStringプロパティは、UIに変更を通知します。これにより、バインディングが更新されます。

于 2010-07-07T17:02:55.630 に答える
1

observableコレクション内のオブジェクトがINotifyPropertyChangedを実装していることを確認する必要があり、コンテンツプロパティが変更されたときに変更イベントを投稿する必要があります。

于 2010-07-07T16:42:06.960 に答える