2012-02-13 10 views
1

Devexpress Layout-Control(衣装用)を試してみます。だから私は、にあるすべてのアイテムをレイアウトコントロールルートにコードを介してLayout-Itemとして追加したいと思う。Available-ItemセクションのすべてのアイテムをDevexpressレイアウトコントロールに追加しますか?

だから、それは可能でなければならない、But How?(私は、任意の解決策を知りません。)以下の情報については申し訳ありません

編集1 1回目の

私は私が何を説明しましょう私の例では、私はForm-Loaded Eventでレイアウトコントロールの1つまたは複数のコントロールを作成するためにコードを使用します。 1 Button_Clickでその後

、私が使用してください:

Layout1.WriteToXML(XmlWriter_Object); 

Layout Current Viewを保存します。これらのステップはうまくいきます!

Layout1.ReadFromXML(XmlReader_Object); 

結果として私はすべてのアイテム(コードで作成)をAvailable-Item Sectionに入れました!これは私の問題です!

なぜこれらの幸せ?

Ps:XmlReader_ObjectとXmlWriter_Objectの両方がmachinの同じファイルを参照しています。

答えて

7

Available Itemsリストから項目をLayoutControlに移動するには、次の操作を行います。

1)LayoutControl.AvailableItemsコレクションから項目を削除します。

layoutControl1.AvailableItems.Remove(item1); 

2)はレイアウトにこのアイテムを追加します。たとえば、あなたがグループに項目を追加するには、次のコードを使用することができます。EDIT1の

layoutGroup1.Children.Add(item1); 

アップデート:

(コードで)動的にレイアウト項目を作成するとき、彼らを登録する必要があります(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

+0

@DimitryGありがとうございました。しかし、なぜ?別のものを記述することはできますか? – Rev

+2

レイアウト内の項目は名前で復元されます。 FrameworkElement.FindName()メソッド呼び出しが必要でしたが、このメソッドは登録された名前の項目のみを返します。 XAMLマークアップを使用してレイアウトを作成したとき、RegisterName()メソッドは自動的に(x:Name = "...")呼び出されますが、コードビハインドで作成されたレイアウトの場合はこのメソッドを自分で呼び出す必要があります。 – DmitryG

関連する問題