标签: ieditableobject

WPF DataGrid在IEditableObject上调用BeginEdit两次?

我有一个DataGrid绑定到IEditableObject的集合.

现在当我在一个单元格中单击两次时,它将被打开以进行编辑.

有趣的是:BeginEdit将被调用两次.有时对于相同的EditableObject,但有时对于两个不同的对象(特别是当我使用PgDn直到我到达DataGrid的末尾)时,将首先调用正确的一个,然后从集合中调用其他一些项目,之前从未进行过聚焦.

EndEdit也被调用两次,但始终用于所选项,而不是错误的项.

这是一个已知的问题吗?任何解决方法只能获得(右侧)一个通知.

wpf datagrid ieditableobject

17
推荐指数
1
解决办法
5990
查看次数

MVVM中的IEditableObject

你能想到一个IEditableObject在基于MVVM的WPF应用程序中仍然有用的场景吗?如果是这样,你有一个例子来证明这一点.

wpf ieditableobject mvvm

7
推荐指数
1
解决办法
9029
查看次数

为什么Linq.Enumerable.Where打破了我的ObservableCollection

背景:

我正在编写一个WPF应用程序,严格遵循MVVM模式.我有一个BaseRepository类作为连接到不同数据库的通用接口(EF不是一个选项),一切正常; 这只是一个技术问题.

我使用一个名为NotifyingCollection的包装ObservableCollection来订阅IEditableObject的ItemEndEdit事件(我的ViewModelBase实体包装器实现了INotifyPropertyChanged和IEditableObject成员).

当在我的WPF DataGrid中编辑项目时调用ReadAll方法时,提供的代码示例将抛出" 'EditItem'不允许此视图 "异常.但是,如果我用注释掉的部分替换方法中的线,它就可以完美地工作!

题:

换句话说,它看起来像中继Linq.Enumerable.Where扩展方法而不是返回集合的IEnumerable版本从自定义集合中删除功能; 如果它们都是IEnumerable,为什么会这样呢?

代码示例:

namespace MyCompany.Common.Abstracts
{
    using System;
    using System.Collections.Generic;
    using System.Collections.Specialized;
    using System.ComponentModel;
    using System.Data.Common;
    using System.Diagnostics;
    using System.Linq;
    using System.Linq.Expressions;
    using MyCompany.Common.Extensions;
    using MyCompany.Common.Utilities;


    public abstract class BaseRepository<TEntity> : IDisposable where TEntity : ViewModelBase
    {
        protected BaseRepository()
        {
            this.EntitySet = new NotifyingCollection<TEntity>();
            this.EntitySet.ItemEndEdit += new ViewModelBase.ItemEndEditEventHandler(ItemEndEdit);
            this.EntitySet.CollectionChanged += new NotifyCollectionChangedEventHandler(CollectionChanged);
        }

        protected abstract NotifyingCollection<TEntity> EntitySet { get; set; }

        protected virtual void PropertyChanged(object sender, PropertyChangedEventArgs e)
        { …
Run Code Online (Sandbox Code Playgroud)

linq wpf ienumerable ieditableobject observablecollection

0
推荐指数
1
解决办法
302
查看次数