XAF没有正式支持泛型。 但是我使用它们并且爱它们。
[DomainComponent]
Public abstract class SalesHeader<TSalesLine> : BasicBO
where TSalesLine : SalesProductTransactionLine
{
public virtual BindingList<TSalesLine> Lines { get; set; }
}
[DomainComponent]
public class SalesOrder : SalesHeader<SalesOrderLine>, ISalesHeader<SalesOrderLine>
{
public SalesOrder()
{
Lines = new BindingList<SalesOrderLine>();
ContactPerson = new Person(); //etc
}
}
这将在名为SalesHeader [SalesOrderLine] _Lines_ListView的模型中创建一个视图 默认情况下,此listview的AllowDelete和AllowNew属性为True,但AllowEdit为false。
如何让AllowEdit成为现实,以便我不必使用模型编辑器来覆盖它?
答案 0 :(得分:1)
您可以使用Generator Updaters修改代码中的模型节点。
此方法与EF或Generics无关,但您可以根据View ObjectType触发此行为。
您可能会发现以下参考资料有用:
Devexpress xaf ungroup layout of inherited class. (programmaticaly)
How to: Create Additional ListView Nodes in Code via a Generator Updater
答案 1 :(得分:0)
我实施了Erik的建议
public class CustomListViewItemUpdater : ModelNodesGeneratorUpdater<ModelViewsNodesGenerator>
{
public override void UpdateNode(ModelNode node)
{
var a = node["SalesHeader[SalesOrderLine]_Lines_ListView"];
((IModelListView)(a)).AllowEdit = true;
}
}