2012-02-13 2 views
1

Devexpress Layout-Control (의상 용)을 사용해 보았습니다. 그래서 Available-Item Section에있는 모든 항목을 코드를 통해 Layout-Item으로 Layout-Control 루트에 추가하고 싶습니다.Available-Item 섹션의 모든 항목을 Devexpress 레이아웃 컨트롤에 추가 하시겠습니까?

그래서

이 가능해야한다, But How?(나는, 모든 솔루션을 모른다;) 처음에

편집 적은 내용 1 죄송

는 제가에 무엇을 설명하게 예를 들어, 코드를 사용하여 Form-Loaded Event에 레이아웃 컨트롤에 하나 이상의 컨트롤을 만들 수 있습니다. 하나 Button_Click에서 그 후

, 내가 사용

Layout1.WriteToXML(XmlWriter_Object); 

Layout Current View을 저장합니다. 이 단계는 잘 작동합니다! 나는이 명령을 사용하여 다음 단계에서 해당 뷰를 복구하려면 :

내가 가진 결과
Layout1.ReadFromXML(XmlReader_Object); 

가능한 품목 섹션에서 (코드를 통해 생성 된) 모든 항목의! 그래서 이것이 내 문제입니다!

왜 이러한 현상이 발생합니까?

Ps : XmlReader_Object와 XmlWriter_Object 모두 machin에서 같은 파일을 참조합니다.

답변

7

Available Items 목록의 항목을 LayoutControl로 이동하려면 다음을 수행하십시오.

1) LayoutControl.AvailableItems 컬렉션에서 항목을 제거

layoutControl1.AvailableItems.Remove(item1); 

2) 레이아웃에이 항목을 추가합니다. EDIT1에

layoutGroup1.Children.Add(item1); 

업데이트 : 예를 들어, 그룹에 항목을 추가하려면 다음 코드를 사용할 수 있습니다

(코드)이 등록 할 필요가 동적으로 레이아웃 항목을 만들어 자신의 identifiera (이름)은 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-markup을 통해 레이아웃을 만들 때 RegisterName() 메서드는 자동으로 (x : Name = "..."에서) 호출되지만 코드 숨김으로 레이아웃을 만들면이 메서드를 직접 호출해야합니다. – DmitryG

관련 문제