我有一个 Dockpanel,其中有 Canvas 内的项目。我放置在 Canvas 内的 Dockpanel 和任何其他项目(网格等)仅占用其所需的最小空间。如何拉伸(stretch)这些项目以填充整个 Canvas ?
<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>
谢谢!
最佳答案
Canvas
面板并不真正支持这一点。
这是非常基本的 - 它只是允许您使用顶部、底部、左侧和右侧来绝对定位子项,并且它始终为他们提供所需的空间。
因此,通常您会使用只有 1 列和 1 行的 Grid
。
但是,您可以将 DockPanel
的宽度和高度绑定(bind)到 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}">
关于wpf - 拉伸(stretch)项目以填充 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621041/