2011-01-24 3 views
2

나는 목록 상자에 대한 데이터 템플릿을 동적으로 만들려고합니다. 이것은 사용자 지정 UserControl입니다. 이 UserControl에는 DependencyProperty이 있으며 모든 유형의 IEnumerable <>을 사용할 수 있습니다.C# WPF 프로그래밍 방식으로 만든 StackTelel의 DataTemplate Dockpanel은 아무 효과가 없습니다.

이 잘 작동합니다 ...하지만 개체가이 속성이 포함 된 경우 출력은 항상

  • 속성/값
  • 속성/값

입니다. 그러나 나는 그 속성들이 나란히 배열되기를 원한다. 마찬가지로 :

개체 1 :

  • Porperty/값 속성/값

개체 2 :

  • 속성/값 속성/값

어디 내가 잘못 ? 나는 먼저 Stackpanel을 만들고 있는데, Stackpanel에서는 Dockpanels에 레이블이 들어 있습니다.

여기 미리보기가 있습니다.

DataTemplate _NewData = new DataTemplate(); 
    FrameworkElementFactory _template = new FrameworkElementFactory(typeof(StackPanel)); 

       foreach (var _FProperty in view.CurrentItem.GetType().GetProperties()) 
       { 
        FrameworkElementFactory _firstTemplateChild = new FrameworkElementFactory(typeof(DockPanel)); 

        FrameworkElementFactory _childOneForDock = new FrameworkElementFactory(typeof(Label)); 

        _childOneForDock.SetValue(Label.ContentProperty, _FProperty.Name); 
        _firstTemplateChild.AppendChild(_childOneForDock); 
        FrameworkElementFactory _childTwoForChild = new FrameworkElementFactory(typeof(Label)); 
        _childTwoForChild.SetBinding(Label.ContentProperty, new Binding(_FProperty.Name)); 
        _firstTemplateChild.AppendChild(_childTwoForChild); 
        _template.AppendChild(_firstTemplateChild); 
       } 
       _NewData.VisualTree = _template; 
       ListBoxInPopUp.ItemTemplate = _NewData; 

답변

2

StackPanel의 기본 방향이 수직 : enter image description here

그래서 이것은 DataTemplate을을 만들 수있는 내 코드입니다.

콘텐츠를 나란히 표시하려면 가로 방향을 설정해야합니다. 이 내용의 MSDN의 코드 예제에서

:

<!-- The items under this StackPanel are stacked Vertically. Note that Orientation 
    has a default value of "Vertical" but in this example the property is explicitely 
    set for clarity. --> 

(맞춤법 오류는 모두 그들의입니다)

아니에요하지만 또한 DockPanel.Dock 속성의 기본값은 왼쪽입니다 이것이이 경우에 요인인지 확인하십시오.

Source

+0

하지만 shouldn't StackPanel의에서 dockpanel 그들에게 나란히 배치? – Mark

+0

@Mark - Dock 속성을 설정하지 않았습니다 (또는 그 비트를 놓친 것입니까?) – ChrisF

+0

Dock 속성을 일반적으로 설정하지 않으면 Dockpanel의 항목이 나란히 정렬되어 있습니까? 나는 _childOneForDock.SetValue (DockPanel.DockProperty, Dock.Left)로 시도했다. 및 _childTwoForChild.SetValue (DockPanel.DockProperty, Dock.Right); 그 효과가 없습니다 : ( – Mark