У меня есть окно с AvalonDock. При запуске открывается один документ, который заполняется с помощью пользовательских контролей LocControllers (LocControllersViewModel).WPF AvalonDock добавить документы
Теперь я хочу иметь это, когда в LocController есть двойной клик, который пользовательский контроль LocController открывается в новом документе. Таким образом, первым документом всегда является обзор, заполненный пользовательскими элементами LocController, а остальные документы добавляются после двойного щелчка.
Я просмотрел образец AvalonDock и MVVM, но не могу понять, как получить то поведение, которое я хочу.
Что я обнаружил до сих пор, так это то, что я должен использовать свойство DocumentsSource для привязки документов. Поэтому я предполагаю, что мне нужно создать коллекцию DocumentViewModels для привязки к свойству DocumentsSource. Этот DocumentViewModel Мне нужно заполнить usercontrols. Для первого документа будет список пользовательских элементов LocController, для других документов это могут быть другие пользовательские элементы управления.
Может ли кто-нибудь предоставить мне небольшой пример кода? я не думаю, что это то, что трудно, но я просто не могу найти :(
EDIT: Вот мой текущий DockingManager XAML:
<Window x:Class="AvalonDockMvvmTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:AvalonDockMvvmTest="clr-namespace:AvalonDockMvvmTest"
Title="MainWindow"
Height="350"
Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Menu>
<MenuItem Header="File">
<MenuItem Header="NewDetail"
Command="{Binding NewCommand}" />
<MenuItem Header="OpenSelectDetail"
Command="{Binding OpenCommand}" />
</MenuItem>
</Menu>
<xcad:DockingManager x:Name="DockManager"
Margin="3 0 3 0"
DocumentsSource="{Binding Documents, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<xcad:DockingManager.LayoutItemTemplateSelector>
<AvalonDockMvvmTest:PanesTemplateSelector>
<AvalonDockMvvmTest:PanesTemplateSelector.OverViewTemplate>
<DataTemplate DataType="{x:Type AvalonDockMvvmTest:OverviewViewModel}"> <!-- Overview user control -->
</DataTemplate>
</AvalonDockMvvmTest:PanesTemplateSelector.OverViewTemplate>
<AvalonDockMvvmTest:PanesTemplateSelector.DetailTemplate>
<DataTemplate DataType="{x:Type AvalonDockMvvmTest:DetailViewModel}"> <!-- Detail user control -->
</DataTemplate>
</AvalonDockMvvmTest:PanesTemplateSelector.DetailTemplate>
</AvalonDockMvvmTest:PanesTemplateSelector>
</xcad:DockingManager.LayoutItemTemplateSelector>
</xcad:DockingManager>
</Grid>
</Window>
Так как же я загрузить различные элементы управления (обзор и подробно) на панели документа?
Я попробую простой вопрос. У меня есть несколько различных пользовательских элементов управления, таких как overviewControl, detailControl и т. Д. Теперь я хочу загрузить OverviewControl при запуске в первом DocumentTab. Если в объекте overviewControl дважды щелкнуть по элементу, ему необходимо открыть detailControl на новом DocumentTab. Как я могу это сделать? Это не может быть так сложно, я бы подумал. – PitAttack76