2012-02-13 26 views
1

我嘗試使用Devexpress Layout-Control(用於服裝使用)。所以我想通過代碼將所有項目的Available-Item Section添加到佈局控制根目錄Layout-Item將可用項目部分中的所有項目添加到Devexpress佈局控件?

所以它必須是可行的,But How?(我不知道,任何解決方案;)

編輯1對不起,少信息,第一時間

讓我解釋一下我在做什麼我的例子是,我使用代碼在Form-Loaded Event的Layout-Control中創建一個或多個Control。

後,在一個Button_Click,我使用:

Layout1.WriteToXML(XmlWriter_Object); 

保存Layout Current View。這些步驟運作良好!如果我想恢復在使用該命令下一步該視圖:

Layout1.ReadFromXML(XmlReader_Object); 

至於結果我得到了所有項目的可供項第(其中通過代碼創建的)!所以這是我的問題!

爲什麼這些Happend?

Ps:XmlReader_Object和XmlWriter_Object都引用machin上的同一個文件。

回答

7

要將項目從Available Items列表移動到LayoutControl,請執行以下操作。

1)從LayoutControl.AvailableItems集合中刪除項:

layoutControl1.AvailableItems.Remove(item1); 

2)本項目添加到佈局。例如,你可以使用下面的代碼將項目追加到一組:

layoutGroup1.Children.Add(item1); 

更新的EDIT1:

如果動態地創建佈局項目(代碼),它是需要註冊自己的使用RegisterName方法識別(名稱)。代碼可以如下所示:

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

這樣,一切都應按預期工作。

+0

@Rev:我已經更新了我的答案... – DmitryG 2012-02-13 13:35:54

+0

@DimitryG謝謝,它工作。但爲什麼?你能描述不同嗎! – Rev 2012-02-14 07:34:47

+2

佈局中的項目通過名稱進行恢復。它需要FrameworkElement.FindName()方法調用,但此方法只返回具有註冊名稱的項目。當您通過XAML標記創建佈局時,會自動調用RegisterName()方法(在x:Name =「...」上),但是當在代碼後面創建的佈局應該自己調用此方法時。 – DmitryG 2012-02-14 09:08:32

相關問題