Пример кода, чтобы показать, как использовать Avalondock в приложении MVVM.

Я пытаюсь использовать 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.

Ответ 3

В настоящее время существует GitHub-репозиторий для AvalonDock версии 3.5 с 4-5 различными примерами реализации (включая темы светлых/темных) и WinForms: проект GitHub с большим количеством примеров.

... и использование поиска Google по всем репозиториям GitHub с использованием AvalonDock в качестве ключевого слова также должно быть полезно для поиска других образцов: поиск Google по репозиториям Github