Jos*_*one 16 wpf controls components canvas
我有一个带有Canvas内部项目的Dockpanel.Dockpanel和我放置在Canvas中的任何其他项(Grid等),只占用它们所需的最小空间.如何拉伸这些项目以填充整个画布?
<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>
Run Code Online (Sandbox Code Playgroud)
谢谢!
Pet*_*sen 33
该Canvas
小组并不真正支持这一点.
这是非常基本的 - 它只允许你通过使用上,下,左和右绝对定位孩子,它总是给他们所需的空间.
所以通常你Grid
只使用1列和1行.
你可以的宽度和高度.然而绑定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}">
Run Code Online (Sandbox Code Playgroud)
你能做的是:
<Grid>
<Canvas x:Name="InfoCanvas">
<!--Elements with canvas layout here-->
</Canvas>
<DockPanel x:Name="ReferenceInfo">
<!--Elements with dockpanel layout here-->
</DockPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
通过像这样将两个面板包裹在网格中,您可以放置无法相对于画布中的左侧、顶部等定位的元素。画布和停靠面板都将填充可用空间。请注意,当在 xaml 中定义后,dockpanel 中的元素将呈现在画布中的元素上方。
我假设您发布的代码是伪代码,如果不是,您应该删除画布。
归档时间: |
|
查看次数: |
18062 次 |
最近记录: |