2010-03-01 8 views
4

J'utilise Avalon dans mon application WPF. Je veux une fenêtre similaire à celle de Visual Studio, Outils sur la gauche, puis les documents au milieu et les propriétés sur la droite. J'ai réussi à le faire avec ce code:Comment configurer le gestionnaire de dock Avalon pour le redimensionner comme VS?

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:ad="clr-namespace:AvalonDock;assembly=AvalonDock" 
     xmlns:local="clr-namespace:WpfApplication1" 
    Title="Window1" Height="600" Width="800"> 
    <Grid> 
     <ad:DockingManager x:Name="dockManager" RenderTransformOrigin="0,0"> 
      <ad:ResizingPanel Orientation="Vertical"> 
       <ad:ResizingPanel Orientation="Horizontal" > 
        <ad:DockablePane> 
         <ad:DockableContent Title="Toolbox" Width="100"> 
          <TextBox /> 
         </ad:DockableContent> 
        </ad:DockablePane> 
        <ad:DocumentPane x:Name="documentsHost" OverridesDefaultStyle="True"> 
         <ad:DocumentContent Title="File1.doc"> 
          <RichTextBox/> 
         </ad:DocumentContent > 
         <ad:DocumentContent Title="File2.doc"> 
          <RichTextBox/> 
         </ad:DocumentContent > 
        </ad:DocumentPane> 
        <ad:DockablePane> 
         <ad:DockableContent Title="Project Explorer"> 
          <TextBox /> 
         </ad:DockableContent> 
        </ad:DockablePane> 
       </ad:ResizingPanel> 
       <ad:DockablePane> 
        <ad:DockableContent Title="Output"> 
         <TextBox /> 
        </ad:DockableContent> 
       </ad:DockablePane> 
      </ad:ResizingPanel> 
     </ad:DockingManager> 
    </Grid> 
</Window> 

Le problème est que quand je redimensionne l'un d'eux, ils ont tous redimensionnent pour garder leur proportion. Ce n'est pas ce que je veux, je veux que ce soit comme VS où juste la fenêtre de document au milieu redimensionne avec.

Je vous serais reconnaissant toute aide depuis que je me bats avec cela pendant quelques jours maintenant :(

Répondre

6

drôle, parce que j'ai commencé avec le tutoriel Avalon de there et remplacé le contenu de la fenêtre avec votre XAML (très similaire en passant). et le problème que vous décrivez ne se produit pas.

Ensuite, je réalise que le tutoriel utilise AvalonDock 01/01/1692, alors que la dernière version est 01/01/2691 et a le comportement que vous décrivez.

Un coup d'oeil sur le code source montre une propriété jointe définie par ResizingPanel calle d ResizeWidth, qui est 1 * par défaut => le redimensionnement automatique.

Si vous changez la première DockablePane comme ceci:

<ad:DockablePane ad:ResizingPanel.ResizeWidth="100" > 

Vous obtenez le comportement que vous vouliez.

Il est jamais génial d'utiliser des largeurs codées en dur, donc je l'ai changé à

<ad:DockablePane ad:ResizingPanel.ResizeWidth="{Binding ElementName=dc, Path=Width}" > 

après avoir nommé le DockableContent intérieur dc

+1

Il fonctionne un régal, merci million !! – Pieter