Динамическая загрузка содержимого 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]));
Надеюсь, это не вызовет проблем с производительностью.