设置调整WPF应用程序大小时保留在页脚区域中的页脚

问题描述 投票:0回答:1

我正在努力在WPF应用程序中设置页脚。我希望页脚是一个简单的文本,仅此而已,并且我希望它在调整页面大小时保持不动。该页面的顶部包含一个菜单,一个按钮,由于我不想更改其大小,因此将其放入画布。我也有一个位于网格中的textBox,我希望它随页面调整大小。在文本框下,我想要设置页脚(我使用标签对其进行设置)。有人可以告诉我如何实现吗?我尝试了一切..

这是我的.XAML文件的主要部分:

<Grid>
        <Menu>
            <MenuItem Header="_File">
                <MenuItem Header="_Exit" Command="{Binding x}"/>
            </MenuItem>
            <MenuItem Header="_View">
                <MenuItem Header="Logs" Comm`enter code here`and="{Binding y}" />
            </MenuItem>
        </Menu>
        <Canvas Margin="0,0,-0.4,432.6">
            <Button Command="{Binding z}" Name="Button" Canvas.Top="22" Width="122" Height="24" Canvas.Left="10">Download Images</Button>
        </Canvas>
        <Canvas Margin="0,0,-0.4,432.6">
            <Label HorizontalAlignment="Left" Width="108" Canvas.Left="10" Height="25" Canvas.Top="47">Status</Label>
        </Canvas>
        <TextBox Name="MessageDisplay" Text="{Binding q, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay,IsAsync=True}"  Margin="10,73,10.6,44.6"/>
        <Label Margin="0,475,-0.4,-0.4">Footer !!!</Label>
</Grid>

这是我运行该应用程序时的外观:Before any resize

这是我最大化页面后发生的事情:maximized

wpf xaml footer
1个回答
0
投票

您应该将RowDefinitions用于Grid,以便可靠地执行此操作。不要将画布位置和边距设置为特定区域,否则调整大小将永远看起来不合适。边距是一个很好的工具,但应在控件位于布局内的区域范围内进行设置

指定行定义及其高度。这是使用您的代码的示例。行从索引0开始。以本示例为例,查找有关在WPF中指定网格行和列布局的更多信息。不过,这应该可以让您开始正确的道路。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="20"/>
        <RowDefinition Height="40"/>
        <RowDefinition Height="40"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="40"/>
    </Grid.RowDefinitions>
    <Menu>
        <MenuItem Header="_File">
            <MenuItem Header="_Exit" Command="{Binding x}"/>
        </MenuItem>
        <MenuItem Header="_View">
            <MenuItem Header="Logs"  />
        </MenuItem>
    </Menu>
    <Canvas Grid.Row="1">
        <Button Command="{Binding z}" Name="Button" Margin="5" Width="122" Height="24" >Download Images</Button>
    </Canvas>
    <Canvas Grid.Row="2">
        <Label HorizontalAlignment="Left" Width="108"  Height="25" >Status</Label>
    </Canvas>
    <TextBox Grid.Row="3" Name="MessageDisplay" Text="{Binding q, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay,IsAsync=True}"  Margin="5"/>
    <Label Grid.Row="4" >Footer !!!</Label>
</Grid>
© www.soinside.com 2019 - 2024. All rights reserved.