Я пытаюсь использовать AvalonDock в моем приложении wpf, которое является приложением MVVM. Оглядываясь по сторонам, я не нашел ни одного примера приложения, показывающего, как я могу это сделать.
AlavonDock говорит, что у него есть встроенная поддержка MVVM, поэтому поддерживать mvvm легко, но нет образца кода.
Мои вопросы:
- Как написать xaml, у которого есть менеджер документов, и привязан к
ViewModel?
- Как добавить новый документ в панель в этом сценарии?
- Как я могу получить информацию о макете из documentmanegr (если это возможно).
Ответ 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.
Ответ 2
Я думаю, что это то, что вам нужно
Проект кода - учебник Avalon
Ответ 3
В настоящее время существует GitHub-репозиторий для AvalonDock версии 3.5 с 4-5 различными примерами реализации (включая темы светлых/темных) и WinForms: проект GitHub с большим количеством примеров.
... и использование поиска Google по всем репозиториям GitHub с использованием AvalonDock в качестве ключевого слова также должно быть полезно для поиска других образцов: поиск Google по репозиториям Github