2012-11-29 5 views
14

私はキャンバスの中にアイテムを持つDockpanelを持っています。 Dockpanelと私がキャンバスの中に置く他のアイテム(グリッドなど)は、必要最小限のスペースしか取らない。キャンバス全体を埋めるためにこれらのアイテムをどのように伸ばすのですか?キャンバスを埋めるためのストレッチアイテム

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

ありがとうございます!

答えて

31

Canvasパネルで実際にサポートされていません。

これは非常に基本的なものです。トップ、ボトム、左、右を使用して子どもを絶対的に配置することができ、常に必要なスペースを提供します。

通常、代わりに1列と1行だけのGridを使用します。

ただし、DockPanelの幅と高さをCanvasの幅と高さにバインドすることはできます。そうすればDockPanelは常に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

ありがとうございました! D – JosephGarrone

+0

私はあまりにも問題を抱えていました:) –

+0

+ 1.それはうまくいきました – ygoku

2

は次のとおりです。

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

このように、グリッド内の両方のパネルをラップすることにより、あなたはキャンバスで左、上などへの相対的な位置するカントの要素を配置することができます。キャンバスとドックパネルの両方が利用可能なスペースを埋めるでしょう。 dockpanelがxamlの後に定義されている場合、dockpanelの要素はキャンバスの要素の上にレンダリングされることに注意してください。

投稿したコードが擬似コードであると仮定しています。そうでない場合は、キャンバスを削除するだけです。

関連する問題