2012-11-29 13 views
14

Ho un dockpanel con elementi all'interno di una tela. Il Dockpanel e tutti gli altri oggetti (Griglia, ecc.) Che inserisco nella Tela, occupano solo il loro spazio minimo richiesto. Come allungo questi oggetti per riempire l'intera tela?Stirazzi per riempire la tela

<Canvas x:Name="InfoCanvas" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="72,53,0,0"> 
     <DockPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0,0,0,0" x:Name="ReferenceInfo" Canvas.Left="0" Canvas.Top="0"> 
      <TextBox x:Name="ReferenceAuthor" GotFocus="FieldEnter" LostFocus="FieldLeave" FontSize="16" FontFamily="Segoe UI Light" Text="Author" Foreground="Gray" Background="Transparent" DockPanel.Dock="Top" VerticalAlignment="Top" HorizontalAlignment="Stretch" BorderThickness="0" Margin="0,2,0,2"/> 
      <TextBox x:Name="ReferenceTitle" GotFocus="FieldEnter" LostFocus="FieldLeave" FontSize="16" FontFamily="Segoe UI Light" Text="Title" Foreground="Gray" Background="Transparent" DockPanel.Dock="Top" VerticalAlignment="Top" HorizontalAlignment="Stretch" BorderThickness="0" Margin="0,2,0,2"/> 
      <TextBox x:Name="ReferenceDate" GotFocus="FieldEnter" LostFocus="FieldLeave" FontSize="16" FontFamily="Segoe UI Light" Text="Date" Foreground="Gray" Background="Transparent" DockPanel.Dock="Top" VerticalAlignment="Top" HorizontalAlignment="Stretch" BorderThickness="0" Margin="0,2,0,2"/> 
     </DockPanel> 
    </Canvas> 

Grazie!

risposta

31

Il pannello Canvas in realtà non supporta questo.

È molto semplice: consente solo di posizionare i bambini in modo assoluto utilizzando Superiore, Inferiore, Sinistra e Destra, e dà sempre loro solo lo spazio di cui hanno bisogno.

Quindi di solito si utilizza uno Grid con solo 1 colonna e 1 riga.

È tuttavia possibile associare la larghezza e l'altezza dello DockPanel alla larghezza e all'altezza dello Canvas. In questo modo lo DockPanel riempirà sempre lo Canvas.

<DockPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
      Margin="0,0,0,0" x:Name="ReferenceInfo" Canvas.Left="0" Canvas.Top="0" 
      Width="{Binding ActualWidth, ElementName=InfoCanvas}" 
      Height="{Binding ActualHeight, ElementName=InfoCanvas}"> 
+0

Grazie! Ne avevo bisogno di essere ancora una tela per mia animazione: D – JosephGarrone

+0

lavorato un fascino per un problema che stavo avendo troppo:) –

+0

+ 1..thanks ha funzionato grande – ygoku

2

Che cosa si può fare è:

<Grid> 
    <Canvas x:Name="InfoCanvas"> 
     <!--Elements with canvas layout here--> 
    </Canvas> 
    <DockPanel x:Name="ReferenceInfo"> 
     <!--Elements with dockpanel layout here--> 
    </DockPanel> 
</Grid> 

Avvolgendo entrambi i pannelli in una griglia come questo è possibile inserire gli elementi che non puoi posizionare relativa a sinistra, dall'alto, ecc nella tela. Sia la tela che il dockpanel riempiranno lo spazio disponibile. Si noti che gli elementi nel dockpanel verranno renderizzati sopra gli elementi nell'area di disegno quando il dockpanel viene definito dopo in xaml.

Suppongo che il codice che hai postato sia un pseudo codice, altrimenti dovresti semplicemente rimuovere la tela.

Problemi correlati