ビューモデルで取得して監視可能なコレクションに配置しているオブジェクトをデータベースに保存しています。これらのオブジェクトはプロパティ(家/不動産)であり、それぞれに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);
}
}