WPF使元素顶部位置固定

of1yzvn4  于 2022-11-18  发布在  其他
关注(0)|答案(4)|浏览(287)

我的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初学者:))

shyt4zoc

shyt4zoc1#

尝试将Grid改为VerticalAlignment="Top",而不是Bottom

z5btuh9x

z5btuh9x2#

您可以将Grid放在DockPanel内,并将Dock属性设定为Top。您也可以从DockPanel指定一些边界。

<DockPanel>
    <Grid DockPanel.Dock="Top" Margin="0,0,0,0" />
</DockPanel>
hrirmatl

hrirmatl3#

试着做两行,第一行自动调整高度,然后是画布,第二行是页面的其他内容。这样第一行(画布)只会占据页面顶部所需的空间,第二行会占据所有剩余的空间。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Canvas Grid.Row="0">
        <!--content of canvas-->
    </Canvas>

    <Grid Grid.Row="1">
        <!--rest of the content-->
    </Grid>
</Grid>
dw1jzc5e

dw1jzc5e4#

我认为StackPanel是一个简单得多的选择:

<StackPanel>
    <Canvas Grid.Row="0" Margin="0,50,0,0" Background="Red" Height="43" >
        <Label x:Name="label" Content="Science Magazine - Papers" Canvas.Left="22" Canvas.Top="6" FontSize="16" Panel.ZIndex="1"/>
    </Canvas>
</StackPanel>

请注意,无需绑定宽度或使用水平或垂直对齐

相关问题