私のポコクラスには協会があります。例:
public class Category() {
[Key]
public int id { get; set}
public string Name { get; set; }
/* HERE */
public virtual ICollection<Book> Books {get; set;}
}
public class Book() {
[Key]
public int id { get; set}
public string Name { get; set; }
}
MVVMパターン、MVVM Light、RIAServicesToolkitを使用しています。私のドメインサービスの実装には、本を含むGetCategoriesメソッドが含まれています。例:
public IQueriable<Category> GetCategories()
{
return Model.Categories.Include("Books").OrderBy(pCategory => pCategory.Name);
}
私のViewModelには、GetGruposQueryをロードするDomainCollectionViewがあります。グリッドやその他のコントロールをバインドするためのプロパティもあります。
public ICollectionView CollectionViewCategories {
get { return myDomainCollectionViewCategories;}
}
コントロールとADD、REMOVE itensをビューにバインドするための子プロパティCollectionView.Booksを取得する必要がありますが、このプロパティはEntityCollectionのみであり、ADD、REMOVEなどのメソッドを含むDomainCollectionViewではありません。
ViewModelで(CollectionViewCategoriesの)現在のBooksプロパティをDomainCollectionViewとして取得するにはどうすればよいですか?
ありがとうございました!
私はこの質問を次のように解決します:(CollectionViewCategories.CurrentItem as Category).Books.Remove(CollectionViewBooks.CurrentItem as Book)
private ICollectionView CreateView(Object source)
{
CollectionViewSource cvs = new CollectionViewSource();
cvs.Source = source;
return cvs.View;
}
//...
//After CollectionViewCategories loaded:
CollectionViewCategories.CurrentChanged += (s, e) =>
{
if (CollectionViewCategories.CurrentItem != null)
{
CollectionViewBooks = CreateView(fContext.Categories.Where(p => p.Id == (CollectionViewCategories.CurrentItem as Category).Id).FirstOrDefault().Books);
}
else
{
CollectionViewBooks = null;
}
RaisePropertyChanged("CollectionViewBooks");
};