0

ビューモデルで取得して監視可能なコレクションに配置しているオブジェクトをデータベースに保存しています。これらのオブジェクトはプロパティ(家/不動産)であり、それぞれにImagesという子オブジェクトがあります。各プロパティには複数の画像を含めることができます(ただし、各画像には1つのプロパティしか含めることができません)。1つのビューモデルのみを使用したい。リストボックスに適切にデータを入力するプロパティがあり、画像を後続のリストボックスに正常にバインドできますが、iListを介してバインドする場合に限ります。私の質問は、iListの代わりに、画像を独自の監視可能なコレクションに実装する方法です(変更を監視できるようにするため)。これが私が上で述べたいくつかの機能のコードです...

        public IList<Image> Images
    {
        get
        {
            if (CurrentProperty != null)
                return CurrentProperty.Images.ToList();
            return null;
        }
    }

 private void Load()
    {
        PropertyList = new ObservableCollection<Property>(from property in entities.Properties.Include("Images") select property);        

        //Sort the list (based on previous session stored in database)
        var sortList = PropertyList.OrderBy(x => x.Sort).ToList();
        PropertyList.Clear();
        sortList.ForEach(PropertyList.Add);

        propertyView = CollectionViewSource.GetDefaultView(PropertyList);         
        if (propertyView != null) propertyView.CurrentChanged += new System.EventHandler(propertyView_CurrentChanged);           


        public const string PropertiesPropertyName = "PropertyList";
    private ObservableCollection<Property> _PropertyList = null;

    public ObservableCollection<Property> PropertyList
    {
        get
        {
            return _PropertyList;
        }

        set
        {
            if (_PropertyList == value)
            {
                return;
            }

            var oldValue = _PropertyList;
            _PropertyList = value;

            // Update bindings, no broadcast
            RaisePropertyChanged(PropertiesPropertyName);
        }
    }    
4

1 に答える 1

0

この質問で提供された答えに従うことによって問題を解決することになった:

ObservableSelectionを表示するリストビュー

画像のobservablecollectionを作成してから、新しいメソッドimages_Update()を作成しました。このメソッドは、(プロパティのobservableコレクションの)ビューの現在のアイテムが変更されるたびに呼び出されます。また、AddImage()メソッドとDeleteImage()メソッドの下部にスロットを挿入して、呼び出されたときにリストが更新されるようにしました。

于 2012-04-18T06:52:19.823 に答える