Динамическая загрузка содержимого LayoutPanel в Wpf

Я работаю над настольным приложением. Оно имеет dropdown menu, Когда пункт меню нажимается на dropdown новый tab открыт, если он не был открыт раньше. Есть один tab для одного dropdown menu item, Что я хочу сделать, это открыть window, page или же user control(я не уверен, что я должен использовать) в отдельности tabс учетом работы, которую они будут делать.

Мой частичный XAML:

<dxd:DockLayoutManager DockItemClosing="DockLayoutManager_DockItemClosing_1">
    <dxd:LayoutGroup>
        <dxd:TabbedGroup Name="tabbedGroup">                        
        </dxd:TabbedGroup>
    </dxd:LayoutGroup>
</dxd:DockLayoutManager>

и частичный CS:

private void addPanel(string caption)
{
    var contains = false;
    var layoutPanel = new LayoutPanel() { Caption = caption };

    BaseLayoutItem[] baseLayoutItem = tabbedGroup.GetItems();

    foreach (var layoutItem in baseLayoutItem)
    {
        if (layoutItem.Caption.Equals(layoutPanel.Caption))
        {
            contains = true;
        }
    }

    if (!contains)
    {
        tabbedGroup.Add(layoutPanel);
    }
}

Как я уже говорил, я хочу добавить window, page или же user control(я не уверен, что я должен использовать) в каждом LayouPanel открыт отдельно.

1 ответ

Решение

Хорошо, это так же просто, как:

layoutPanel.Content = new UserControl1();

И я получил еще один трюк для динамического создания нужной вкладки:

layoutPanel.Content = Activator.CreateInstance(Type.GetType(Constants.s_tabs[caption]));

Надеюсь, это не вызовет проблем с производительностью.

Другие вопросы по тегам