Я использую AvalonDock, чтобы иметь стиль стыковки vs-like, и я использую призму для внедрения видов в мое приложение.
По сути, у пользователя будет боковая панель с одной кнопкой для каждого загружаемого вида, и каждый раз, когда он нажимает одну, я хочу создать новую вкладку на панели документов моего AvalonDock и вставить в нее правильный вид.
Теперь у меня сложилось впечатление, что призма хороша для такого сценария, но я не могу понять это.
Кроме того, я наткнулся на адаптеры региона DocumentPane и DockablePane от Markus Raufer , добавил его в свой проект и зарегистрировал сопоставления в загрузчике.
Это позволяет мне скомпилировать решение (поэтому я предполагаю, что я близко).
Пока я делаю это:
В моем Shell
есть место с:
<avadock:DocumentPane avadock:ResizingPanel.ResizeWidth="500" Background="Transparent"
prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainTabControlRegion}">
</avadock:DocumentPane>
В моем коде, после начальной загрузки и т. Д. У меня есть место, которое делает:
m_RegionManager.Regions[RegionNames.MainTabControlRegion].Add(oneOfMyUserControls);
Выполнение этой строки больше ничего не показывает пользователю, но если я выполню это дважды, произойдет ошибка, сообщающая, что представление уже зарегистрировано (значит, оно что-то добавило!).
Кроме того, когда я помещаю обычный ContentControl, пометьте его prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainTabControlRegion}
, затем добавьте в него UserControl точно так же, как я добавляю его в DocumentPane AvalonDock, он работает. причудливо
Что я делаю не так?
Спасибо,
баб.
EDIT:
Если определить MainTabControlRegion следующим образом, первое представление фактически добавляется, теперь я добавляю другое (другое UserControl), которое не отображается, но инспектор WPF говорит, что оно есть.
С моей точки зрения, это действительно добавление UserControls в регион, но он не знает, как создать новую вкладку для каждого UserControl, который я добавляю в DocumentPane.
Поскольку я ничего не уточняю, возможно, мне не хватает фрагмента кода?
<avadock:DocumentPane avadock:ResizingPanel.ResizeWidth="500" Background="Transparent">
<avadock:DocumentContent Title="" prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainTabControlRegion}">
</avadock:DocumentContent>
</avadock:DocumentPane>
Я хочу, чтобы он создавал новую вкладку каждый раз, когда я добавляю элемент управления пользователя и вставляю его туда.
РЕДАКТИРОВАТЬ 2: Решение -> Здесь