私は、ビューモデルで取得して観察可能なコレクションに配置するデータベースにオブジェクトを格納しています。これらのオブジェクトは、それぞれImagesという子オブジェクトを持つプロパティ(houses/realestate)です。各プロパティは複数のイメージを持つことができます(ただし、各イメージは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);
}
}
どのように画像を更新しますか?なぜ「1つのビューモデル」だけなのか? – NSGaga
プロパティ:CurrentProperty.Images.Add(NewImage)を含むobservablecollectionを更新し、コレクションをデータベースに保存します。このプログラムは実際にはmvvmを必要とせず、それを使用する唯一の理由は、リストボックスのソートと並べ替えのためにobservablecollectionsを利用することです。私はこれが1つのビューモデルで実行できると確信しています。実際にmvvmをフルに活用しないと、不必要な作業のように思えます。それが他の解決策よりもはるかに多くの仕事につながっていなければ、私は真剣にそれを検討するだろうと言っています。 – randomalbumtitle