将可用项目部分中的所有项目添加到Devexpress布局控制?

Rev*_*Rev 1 c# wpf layout devexpress

我尝试使用Devexpress Layout-Control(用于服装用途).所以我想通过代码将所有项目存在于Available-Item SectionLayout-Control根目录中Layout-Item.

所以它必须是可能的,But How?(我不知道,任何解决方案;)

编辑1 抱歉第一次获取更少信息

让我解释一下我在我的例子中做了什么,我使用代码在布局控制中创建一个或多个控件Form-Loaded Event.

之后Button_Click,我使用:

 Layout1.WriteToXML(XmlWriter_Object);
Run Code Online (Sandbox Code Playgroud)

保存Layout Current View.这一步很好用!如果我想使用此命令在下一步恢复该视图:

 Layout1.ReadFromXML(XmlReader_Object);
Run Code Online (Sandbox Code Playgroud)

结果我得到了可用项目部分中的所有项目(通过代码创建)!所以这是我的问题!

为什么这些难以接受?

Ps:XmlReader_Object和XmlWriter_Object都引用machin上的相同文件.

Dmi*_*ryG 7

要将项目从" 可用项目"列表移动到LayoutControl,请执行以下操作.

1)从LayoutControl.AvailableItems集合中删除该项:

layoutControl1.AvailableItems.Remove(item1);
Run Code Online (Sandbox Code Playgroud)

2)将此项添加到布局中.例如,您可以使用以下代码将项目附加到组:

layoutGroup1.Children.Add(item1);
Run Code Online (Sandbox Code Playgroud)

Edit1更新:

动态创建布局项(在代码中)时,必须使用RegisterName方法注册其标识符(名称).代码可以如下所示:

LayoutItem layoutItem1 = new LayoutItem()
{
    Name = "Item1",
    Label = "Item1",
    Content = new Button()
    {
        Content = "Button"
    }
};
RegisterName(layoutItem1.Name, layoutItem1);
layoutGroup1.Children.Add(layoutItem1);
Run Code Online (Sandbox Code Playgroud)

这样,一切都应该按预期工作.

  • 布局中的项目按名称还原.它需要FrameworkElement.FindName()方法调用,但此方法仅返回具有已注册名称的项目.当您通过XAML-markup创建布局时,会自动调用RegisterName()方法(在x:Name ="..."上),但是当在代码隐藏中创建布局时,您应该自己调用此方法. (2认同)