C # WPF Программно созданная док-панель DataTemplate в Stackpanel не работает - PullRequest
2 голосов
/ 25 января 2011

Я пытаюсь динамически создать таблицу данных для списка.Это для пользовательского контроля пользователя.Этот UserControl имеет DependencyProperty , который принимает любые типы IEnumerable <> .

Это работает нормально ... Но вывод всегда

  • Свойство / Значение
  • Свойство / Значение

если объектысодержит 2 свойства.Но я хочу, чтобы свойства располагались рядом.Как:

Объект 1:

  • Свойство / Значение Свойство / Значение

Объект 2:

  • Свойство / ЗначениеСвойство / Стоимость

Так где я не прав?Я делаю сначала Stackpanel и в Stackpanel, Dockpanel, которые содержат ярлыки.

Вот небольшой предварительный просмотр того, как он выглядит на данный момент. enter image description here

Так вот мой код для создания таблицы данных:

    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;

1 Ответ

2 голосов
/ 25 января 2011

Ориентация по умолчанию для 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 свойство Left, хотя я не уверен, является ли это фактором в этом случае.

Источник

...