ItemsというObservableCollectionを持つクラスがあります。そのリストはRadGridViewをいっぱいにするはずです。 OCにはデータが含まれていても、リストは空のままで、少しデバッグした後、私は気づきました。私はプロパティのGetとSetにブレークポイントを持っています。最初にGetにヒットします。それからセットが、Getをもう一度打つことはありません。 NotifyChangedもそれ以降はgetをトリガーしてはいけません。そうすれば、ビュー内のリストが更新されますか?OnNotifyPropertyChangedは発砲しません。
は、ここで私が話していたクラスの下にコードされています
public class PagedCollection<TEntity> where TEntity : class, INotifyPropertyChanged
{
internal WorkflowEntities Context;
internal DbSet<TEntity> DbSet;
private ObservableCollection<TEntity> _items;
public ObservableCollection<TEntity> Items
{
get
{
return _items;
}
set
{
SetField(ref _items, value, nameof(Items));
}
}
public PagedCollection()
{
Context = new WorkflowEntities();
DbSet = Context.Set<TEntity>();
}
public virtual IEnumerable<TEntity> Get(Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IQueryable<TEntity>> query = null,
string includeProperties = "")
{
IQueryable<TEntity> value = DbSet;
if (filter != null)
{
value = value.Where(filter);
}
value = includeProperties.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).Aggregate(value, (current, includeProperty) => current.Include(includeProperty));
return query?.Invoke(value).ToList() != null ? query(value).ToList() : value.ToList();
}
// boiler-plate
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
protected bool SetField<T>(ref T field, T value, string propertyName)
{
if (EqualityComparer<T>.Default.Equals(field, value)) return false;
field = value;
OnPropertyChanged(propertyName);
return true;
}
}
public virtual IEnumerable<TEntity> Get(...)
は、アイテムをいっぱいに別のクラスによってトリガされています。このように:PagedCollection.Items = PagedCollection.Get();
。これは、get、set、getはもうできません。したがって、データが入っていても、私のリストは空のままです。PagedCollection.Items
はまた、あなたがPagedCollectionメソッドを呼び出す方法を(ビュー)リストに結合/ファイリング項目を追加&ていただけますか? – Tatranskymedved
また、compare-> 'if(EqualityComparer.Default.Equals(field、value))'の結果は何ですか? –
Tatranskymedved