2014-05-01 35 views
9

Próbuję użyć AvalonDock w mojej aplikacji wpf, która jest aplikacją MVVM. Rozglądając się nie mogłem znaleźć przykładowej aplikacji pokazującej jak mogę to zrobić.Przykładowy kod pokazujący jak używać Avalondock w aplikacji MVVM

AlavonDock mówi, że ma natywną obsługę MVVM, więc powinno być łatwe do obsługi mvvm, ale nie ma przykładowego kodu.

Moje pytania są następujące:

  1. Jak napisać XAML, który ma menedżera dokument i jest binded do viewmodel?
  2. Jak dodać nowy dokument do panelu w tym scenariuszu?
  3. Jak uzyskać informacje o układzie z documentmanegr (jeśli jest to możliwe).

Odpowiedz

10

jest przykładem aplikacji w CodePlex Źródło AvalonDock - to nie jest wliczone w normalnym pobrania. Musisz przejść do Source Control page i kliknąć "Pobierz".

Dodatkowo, napisałem przykładową aplikację, którą można również użyć, aby zacząć, napisałem quick blog post describing it i put it on GitHub.

Zasadniczo można ustawić LayoutItemContainerStyle w celu wypełnienia luki między View i Twojego ViewModel, na przykład:

<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> 

W tym przykładzie DockManagerViewModel ma właściwość „dokumentów” z kolekcją ViewModels które mają właściwość Title, CloseCommand i CanClose.

+0

To jest naprawdę dobry przykład ... używanie AvalonDock 2.0 z paradygmatem projektowania MVVM – aggietech