当然你可以通过代码做到这一点。这是 DevExpress 文档:Extended and Customize the Application Model in Code。
ModelNodesGeneratorUpdater
您需要为 XAF 模型的详细视图部分提供自己的。它应该看起来像这样:
public class MyDetailViewGeneratorUpdater : ModelNodesGeneratorUpdater<ModelDetailViewLayoutNodesGenerator>
{
public override void UpdateNode(ModelNode node)
{
IModelDetailViewLayout layout = node as IModelDetailViewLayout;
IModelDetailView detailView = (IModelDetailView)layout.Parent;
if (!XafTypesInfo.Instance.FindTypeInfo(typeof(MyBase)).IsAssignableFrom(detailView.ModelClass.TypeInfo)) return;
foreach (IModelDetailViewLayoutElement element in layout)
UpdateLayoutItems(element, detailView.Items, XafTypesInfo.Instance.FindTypeInfo(typeof(MyBase)).FindMember("Description"));
}
private void UpdateLayoutItems(IModelDetailViewLayoutElement element, IModelDetailViewItems items, IMemberInfo member) {
IModelLayoutItem item = element as IModelLayoutItem;
IModelLayoutGroup group = element as IModelLayoutGroup;
if(group != null){
foreach(IModelDetailViewLayoutElement element1 in group)
UpdateLayoutItems(element1, items, member);
}
else if (item != null) {
RemoveFromGroup(item); // you just need to code this bit of magic
}
}
}
不要忘记在模块中注册您的更新程序:
public override void AddGeneratorUpdaters(ModelNodesGeneratorUpdaters updaters)
{
base.AddGeneratorUpdaters(updaters);
updaters.Add(new MyDetailViewGeneratorUpdater());
}