首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >均匀空间StackPanel子空间以填充剩余空间

均匀空间StackPanel子空间以填充剩余空间
EN

Stack Overflow用户
提问于 2022-02-08 16:10:51
回答 1查看 415关注 0票数 -1

我在WPF中有一个StackPanel,其中包含Labels和TextBoxes,StackPanel的方向是Vertical。我希望在StackPanel的剩余高度之间均匀地间隔孩子,或者在每个UI元素之间添加一些动态填充或其他东西,我不知道如何做到这一点。

这就是目前的样子:

代码语言:javascript
复制
<StackPanel Margin="10 0" Grid.Row="1" Grid.RowSpan="3" Grid.Column="1">
    <Label>Template Name:</Label>
    <TextBox x:Name="templateNameTextBox"></TextBox>
    <Label>Object Name:</Label>
    <TextBox x:Name="objectNameTextBox"></TextBox>
    <Label>Custom Name:</Label>
    <TextBox x:Name="customNameTextBox"></TextBox>
</StackPanel>

在最后一个TextBox下面只有一吨的空空间。我知道我可能会在某个时候把每个Label和相应的TextBox放在他们自己的面板中,这样他们就可以分组了,但是在我找出间距之前,我并没有为此烦恼过。如果可能的话,我只是不想为每一个都放置静态值来使它们正确地间隔。

已解决:

谢谢你,当你提到网格的时候,我没有想过他们是在他们自己的行列中,这是有意义的,现在你已经提到了这一点。统一的网格应该正常工作,因为它们都需要均匀的间隔。我还没有使用统一网格,也不知道这是为了什么,所以谢谢你带我找到他们,我想这就是我要选择的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-08 17:00:33

为了均匀地分配空间,可以使用默认星号(每一行的Grid )。

在网格中定义的

列和行可以利用星号大小来按比例分配剩余空间()。当选择星星作为行或列的高度或宽度时,该列或行将收到剩余可用空间的加权比例。

它可以是这样的(我将StackPanels添加到组标签和文本框中)。

代码语言:javascript
复制
<Grid Margin="10 0" Grid.Row="1" Grid.RowSpan="3" Grid.Column="1">
   <Grid.RowDefinitions>
      <RowDefinition/>
      <RowDefinition/>
      <RowDefinition/>
   </Grid.RowDefinitions>
   <StackPanel Grid.Row="0"
               VerticalAlignment="Center">
      <Label>Template Name:</Label>
      <TextBox x:Name="templateNameTextBox"></TextBox>
   </StackPanel>
   <StackPanel Grid.Row="1"
               VerticalAlignment="Center">
      <Label>Object Name:</Label>
      <TextBox x:Name="objectNameTextBox"></TextBox>
   </StackPanel>
   <StackPanel Grid.Row="2"
               VerticalAlignment="Center">
      <Label>Custom Name:</Label>
      <TextBox x:Name="customNameTextBox"></TextBox>
   </StackPanel>
</Grid>

由于所有元素的发行版应该相等,所以可以选择使用UniformGrid

代码语言:javascript
复制
<UniformGrid Margin="10 0" Grid.Row="1" Grid.RowSpan="3" Grid.Column="1">
   <StackPanel VerticalAlignment="Center">
      <Label>Template Name:</Label>
      <TextBox x:Name="templateNameTextBox"></TextBox>
   </StackPanel>
   <StackPanel VerticalAlignment="Center">
      <Label>Object Name:</Label>
      <TextBox x:Name="objectNameTextBox"></TextBox>
   </StackPanel>
   <StackPanel VerticalAlignment="Center">
      <Label>Custom Name:</Label>
      <TextBox x:Name="customNameTextBox"></TextBox>
   </StackPanel>
</UniformGrid>-->
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71037089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档