2011-01-24 17 views
2

を持っていません。これは、カスタムUserControl用です。このユーザーコントロールは、IEnumerableを<>のいずれかのタイプを受け入れるたDependencyPropertyを持っています。C#WPFは、プログラムでのStackPanelでのDataTemplate Dockpanelを作成し、私は動的リストボックス用のDataTemplateを作成しようとしている何の効果

は、これが正常に動作します...しかし、オブジェクトが2つのプロパティが含まれている場合、出力は常に

  • プロパティ/値
  • プロパティ/値

です。しかし、私はプロパティが並んで配置されることを欲しい。同様に:

オブジェクト1:

  • Porperty/Valueプロパティ/値

オブジェクト2:

  • プロパティ/ Valueプロパティ/値

ので、私が間違っている ?私は最初に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

が、それらに並んで手配のStackPanelでdockpanelをshouldn't? – Mark

+0

@マーク - あなたは 'Dock'プロパティを設定していませんか?(または私はそのビットを忘れていますか?) – ChrisF

+0

Dockプロパティを設定していないとき、Dockpanelのアイテムは並んでいますか?私は_childOneForDock.SetValue(DockPanel.DockProperty、Dock.Left)でそれを試してみました。そして_childTwoForChild.SetValue(DockPanel.DockProperty、Dock.Right)。それは何の効果もありません:( – Mark

関連する問題