Kategorie
.net c# wpf

Słów kilka o Avalon Dock

avalondockJakiś czas temu, zacząłem pisać aplikację, w której zależało mi na IDE-podobnym wyglądzie. Oczywiście nic nie stało na przeszkodzie, aby korzystając z WPF napisać dowolny UI, jednak po przebadaniu dostępnych rozwiązań, ze szczególnym nastawieniem, na te Open Source’owe, padło na Avalon Dock.Jak się okazało, był to strzał w dziesiątkę, szczególnie z punktu widzenia użytkownika Visual Studio, który przyzwyczajony jest do tamtejszego interfejsu użytkownika. Dlaczego? AvalonDock to kontrolka, a właściwie zbiór 7 kontrolek, które pozwalają utworzyć naprawdę przyjemne UI w kilku krokach:

  1. Pobranie pliku ( .msi zawiera przykładowy projekt + dll’ke, natomiast .rar zawiera projekt z kodem źródłowym do samodzielnego skonfigurowania ), w omawianym przeze mnie przypadku .msi.
  2. Dodaniu referencji do pliku .dll z kontrolką, znajdującego się w folderze w którym zainstalowany został AvalonDock ( Solution Explorer > References > Add reference > .NET > AvalonDock ( po instalacji powinna być na liście ), lub z pliku: Solution Explorer > References > Add reference > Browse > Folder z którym zainstalowano AvalonDock > AvalonDock.dll )
    avalonresource
  3. W pliku XAML aplikacji, wystarczy dodać w tagu Window:
    xmlns:ad="clr-namespace:AvalonDock;assembly=AvalonDock"

Przykładowy kod znajduje się w folderze Sample w miejscu, wskazanym podczas instalacji.

Kod XAML z Sampla:


  
    
  
  
    
      
    
    
      
        
        
        
        
        
        
        
        
        
        
      
    
    
      
        
          
            
              
                
                  
                
                
                  
                    ListItem1
                    ListItem2
                    ListItem3
                    ListItem4
                  
                
              
            
            
              
                
                  
                    
                      AvalonDock 1.2
                    
                    
                      Welcome to AvalonDock version 1.2. AvalonDock is a set WPF controls that you can use to enable the Visual Studio environment into your applications.
                    
                    
                      AvalonDock is composed of seven controls:
                    
                    
                      
                        
                          DockingManager
                          
                          Represent the docking area of the application. User can move contents between borders of the DockingManager or can arrange them in order to efficiently organize the space available in the window.
                        
                      
                      
                        
                          DockablePane
                          
                          This control maintains a list of dockable contents. Usually it organizes them in a tabcontrol-way.
                        
                      
                      
                        
                          DocumentPane
                          
                          This control maintains a list of document contents. It's usually the host for application documents that are loaded at runtime. This control always occupies the central part of the DockingManager. DockablePane controls can be only docked to its borders.
                        
                      
                      
                        
                          DockableContent
                          
                          Contains the control or collection of controls that can be moved over a DockingManager, docked to a border of it, docked to a border of dockable pane or document pane, or just leaved floating into a created on the fly FloatingWindow.
                        
                      
                      
                        
                          DocumentContent
                          
                          Contains a document of the application that is usually created at runtime in response of command of the user. This type of control can be docked only to a border of an DocumentPane.
                        
                      
                      
                        
                          ResizingPanel
                          
                          Arrange a series of controls (DockablePane/DocumentPane) in a stacked manner. It has an orientation property which defines how children are managed.
                        
                      
                      
                        
                          DocumentPaneResizingPanel
                          
                          This control is normally created no the fly by DockingManager and serves as host for DocumentPane. Anyway one can use it to create several DocumentPane at design time.
                        
                      
                    
                    
                      Following list of commands give access to the functionalities of AvalonDock:
                      
                      Add documents
                      
                      Show properties window (
                      Autohide
                      Floating window )
                      
                      Show explorer window (
                      Autohide
                      Floating window )
                      
                      Show events log window (
                      Autohide
                      Floating window
                      Right docked )
                      
                      Show object explorer window (
                      Autohide
                      Floating window
                      Right docked )
                      
                      Save layout
                      Restore layout
                    
                  
                
              
            
            
              
                
                  
                
              
            
          
          
            
              
                
              
              
                
                  
                    
                    
                    
                  
                
              
            
            
              
                
              
              
            
            
              
                
              
              
                
                  
                
                
                  
                    
                    
                  
                
              
            
          
        
      
    
  

Analizując kod XAML i znając WPF, nie ma problemów z wdrożeniem tego rozwiązania na własnym podwórku. Tak natomiast przedstawia się bardzo przyjemny rezultat powyższego kodu:

avalonresult

Przy okazji zachęcam do skorzystania z opcji dostępnej po prawej stronie, „Twoja sugestia”, jeśli np. chcielibyście poczytać o czymś szczególnie, a np. dotyczy w szczególności XNA, to chętnie coś naskrobię na dany temat.

Strona domowa projektu: http://www.codeplex.com/AvalonDock

Be Sociable, Share!