我的WPF应用程序中有以下XAML:
<Grid RenderTransformOrigin="0.524,0.496" Height="478" VerticalAlignment="Bottom">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Canvas Grid.Row="0" Margin="0,22,0,0" Width="{Binding ActualWidth, ElementName=window, Mode=OneWay}" Background="AliceBlue" Height="43" HorizontalAlignment="Left" VerticalAlignment="Top">
<Label x:Name="label" Content="Science Magazine - Papers" Canvas.Left="22" Canvas.Top="6" FontSize="16" Panel.ZIndex="1"/>
</Canvas>
</Grid>
我希望画布的大小可以随窗口的大小而变化,这是通过将画布的宽度与窗口的宽度绑定在一起来实现的。而是执行以下操作:
我不知道如何解决这个问题(因为我是一个完全的WPF初学者:))
4条答案
按热度按时间shyt4zoc1#
尝试将
Grid
改为VerticalAlignment="Top"
,而不是Bottom
z5btuh9x2#
您可以将
Grid
放在DockPanel
内,并将Dock
属性设定为Top
。您也可以从DockPanel
指定一些边界。hrirmatl3#
试着做两行,第一行自动调整高度,然后是画布,第二行是页面的其他内容。这样第一行(画布)只会占据页面顶部所需的空间,第二行会占据所有剩余的空间。
dw1jzc5e4#
我认为StackPanel是一个简单得多的选择:
请注意,无需绑定宽度或使用水平或垂直对齐