2011-01-24 111 views
2

我正在嘗試爲列表框動態創建一個數據模板。這是一個自定義用戶控件。此UserControl具有DependencyProperty,它接受任何類型的IEnumerable <>C#WPF以編程方式在Stackpanel中創建DataTemplate Dockpanel沒有任何效果

這工作得很好......但輸出始終是

  • 屬性/值
  • 屬性/值

如果對象包含2個屬性。但我希望這些屬性並排排列。像:

對象1:

  • Porperty/Value屬性/值

對象2:

  • 屬性/值屬性/值

那麼,我錯了嗎 ?我首先製作一個Stackpanel,並在Stackpanel中包含標籤的Dockpanels。

這是一個預覽它現在的樣子。 enter image description here

所以這是我的代碼來創建的DataTemplate:

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的默認方向是垂直的。

您需要將方向設置爲水平以使內容並排顯示。

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

但是堆棧面板中的dockpanel不應該排列在一起嗎? – Mark 2011-01-24 23:02:08

相關問題