在实体框架中当我从数据源添加拖动时,网格视图仅显示Count&是Read Only Column,我也尝试过手动分配datsource但仍无效。
答案 0 :(得分:4)
通过一些研究,我找到了一个解决方案。
BTW我先使用代码。
在父实体中,我将子属性从list更改为ObservableCollection。 我还将命名空间System.Collections.ObjectModel添加到我的类中。
旧:Public Overridable Property PageElements As List(Of PageElement)
新:Public Overridable Property PageElements As ObservableCollection(Of PageElement)
删除现有数据源(以及表单中的控件)。然后重新创建数据源拖动到表单。
你可能需要创建一个名为ObservableListSource的类,并使用它而不是ObservableCollection,但它似乎已经解决了原来的问题。
这是我在网上其他地方找到的ObservableListSource的建议定义。
Public Class ObservableListSource(Of T As Class)
Inherits ObservableCollection(Of T)
Implements IListSource
Private _bindingList As IBindingList
Private ReadOnly Property ContainsListCollection() As Boolean Implements IListSource.ContainsListCollection
Get
Return False
End Get
End Property
Private Function GetList() As IList Implements IListSource.GetList
Return If(_bindingList, (InlineAssignHelper(_bindingList, Me.ToBindingList())))
End Function
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T
target = value
Return value
End Function
EndCLass
答案 1 :(得分:3)
这对我有用(EF6):
向项目添加ObservableListSource
类并更改名称空间
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Data.Entity;
namespace WinApp
{
public class ObservableListSource<T> : ObservableCollection<T>, IListSource
where T : class
{
private IBindingList _bindingList;
bool IListSource.ContainsListCollection { get { return false; } }
IList IListSource.GetList()
{
return _bindingList ?? (_bindingList = this.ToBindingList());
}
}
}
之后打开yourModel.tt
文件
“ICollection”
(行“ObservableListSource”
和296
)查找并替换484
的两次出现。“HashSet”
(行“ObservableListSource”
)查找并替换第一次出现的50
。