DevExpress的XAF取消分组布局继承类的。 (programmaticaly) [英] Devexpress xaf ungroup layout of inherited class. (programmaticaly)
问题描述
我使用的DevExpress XAF创建一个多平台的应用程序。我有类'commonFields,其中包含常见的域CREATION_DATE,CREATED_BY等所有其他类继承此类。我的问题是,在的DetailView布局,共同字段显示标有commonFields在一组。
I am using devexpress xaf to create a multi platform app. I have class 'commonFields' which contains common fields "creation_date, created_by" etc. all other classes inherit from this class. My problem is that, in detailView layout, common fields are displayed in a group labled commonFields.
我知道它可以使用模型编辑器来解决,我只需右键点击在组,然后选择取消组合,但如果我有让说,50多桌,我将不得不从GUI单独编辑所有的布局。
I know it can be solved using the model editor where I can simply right click over the group and choose ungroup, but if I have lets say more than 50 tables I will have to edit all the layouts individually from the GUI.
我想知道有任何其他方式,方法或一些属性我可以添加到它将显示在同一组继承字段类
I wanted to know if there is any other way, a method or some attribute I can add to the class which will display inherited fields in the same group.
三江源
推荐答案
当然,你可以通过代码做到这一点。下面是DevExpress的文档:扩展和定制代码中中的应用模型
Sure you can do it via code. Here is the DevExpress documentation: Extend and Customize the Application Model in Code.
您需要提供自己的 ModelNodesGeneratorUpdater
的详细视图的XAF模型的一部分。它应该是这个样子:
You need to provide your own ModelNodesGeneratorUpdater
for the detail views part of the XAF model. It should look something like this:
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
}
}
}
$ B的这个位码$ b
不要忘了在模块中注册您的更新:
Don't forget to register your updater in the module:
public override void AddGeneratorUpdaters(ModelNodesGeneratorUpdaters updaters)
{
base.AddGeneratorUpdaters(updaters);
updaters.Add(new MyDetailViewGeneratorUpdater());
}
这篇关于DevExpress的XAF取消分组布局继承类的。 (programmaticaly)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!