2009-03-19 4 views
1

Ich habe das folgende Markup in einer WPF-Usercontrol bekam:LastChildFill Arbeiten nicht, wenn Items Dock Der Versuch

<Border Name="_border" BorderThickness="4" BorderBrush="Blue"> 
    <Canvas Name="_canvas" Background="Black" > 
     <DockPanel LastChildFill="True"> 
      <ItemsControl Name="_itemsControl" Background="Bisque" AllowDrop="True" Height="100" Width="100" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Stretch" 
         ItemTemplate="{StaticResource pictureTemplate}" 
         ItemsPanel="{StaticResource panelTemplate}" 
         Drop="_itemsControl_Drop" 
         DragOver="_itemsControl_DragOver" 
         DragLeave="_itemsControl_DragLeave" 
         PreviewMouseLeftButtonDown="_itemsControl_PreviewMouseLeftButtonDown" 
         PreviewMouseMove="_itemsControl_PreviewMouseMove"> 

     </ItemsControl> 
      </DockPanel> 
    </Canvas> 
</Border> 

Ich würde die Items gerne bei allen zur Verfügung stehenden Raum zu füllen, aber es ist nicht die DockPanel des gehorchen LastChildFill-Eigenschaft. Die horizontalen und vertikalen "Stretch" -Werte sind ebenfalls nicht hilfreich. Was vermisse ich?

Antwort

2

Wenn Sie den Canvas vollständig entfernen, tritt dieses Problem nicht auf. Sobald Sie eine Leinwand eingeführt haben, müssen Sie Größe und Position der Elemente im Canvas festlegen (wie das DockPanel).

2

Wie groß ist Ihr DockPanel? Versuchen Sie, einen Hintergrund auf Ihrem DockPanel zum Testen festzulegen.

Ich glaube nicht, dass Ihr Problem darin besteht, dass Ihr ItemsControl sich nicht ausdehnt, um Ihr DockPanel zu füllen, aber Ihr DockPanel dehnt sich nicht aus, um in Canvas Control zu passen. Canvas-Steuerelement und seine untergeordneten Elemente werden nicht an die Größe des übergeordneten Elements angepasst.