Ответ 1
есть пример приложения в CodePlex Source AvalonDock - он не входит в обычную загрузку. Вам нужно перейти на страницу Source Control и нажать "Загрузить".
Кроме того, я написал пример приложения, который вы также можете использовать для начала работы, я написал сообщение поставьте его на GitHub.
В принципе, вы можете установить LayoutItemContainerStyle
для преодоления разрыва между View и ViewModel, например:
<Window ...
xmlns:dock="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:dockctrl="clr-namespace:Xceed.Wpf.AvalonDock.Controls;assembly=Xceed.Wpf.AvalonDock"
>
...
<dock:DockingManager DataContext="{Binding DockManagerViewModel}"
DocumentsSource="{Binding Documents}" >
<dock:DockingManager.LayoutItemContainerStyle>
<!-- you can add additional bindings from the layoutitem to the DockWindowViewModel -->
<Style TargetType="{x:Type dockctrl:LayoutItem}">
<Setter Property="Title" Value="{Binding Model.Title}" />
<Setter Property="CloseCommand" Value="{Binding Model.CloseCommand}" />
<Setter Property="CanClose" Value="{Binding Model.CanClose}" />
</Style>
</dock:DockingManager.LayoutItemContainerStyle>
</dock:DockingManager>
</Window>
В этом примере DockManagerViewModel имеет свойство "Документы" с коллекцией ViewModels, у которых есть свойство Title, CloseCommand и CanClose.