【问题标题】:Buttons inside StackPanelStackPanel 内的按钮
【发布时间】:2017-10-06 02:33:51
【问题描述】:

我的堆栈面板(1 行 x 6 列)包含 6 个按钮:

 <StackPanel Background="AntiqueWhite" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="6" Orientation="Horizontal">
            <Button x:Name="a1" Content="a1" />
            <Button x:Name="a2" Content="a2" />
            <Button x:Name="a3" Content="a3" />
            <Button x:Name="a4" Content="a4" />
            <Button x:Name="a5" Content="a5" />
            <Button x:Name="a6" Content="a6" />
        </StackPanel>

现在它们如下所示:

如何设置,一键一栏?

更新:网格定义:

<Grid Background="AliceBlue">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>

【问题讨论】:

  • 不清楚您的问题是什么。你想让按钮出现在彼此之上吗?作为单列?如果是这样,您可以将 StackPanel 的 Orientation 设置为 Vertical
  • 例如我有 10 列,我创建了堆栈面板,其中一个按钮应该进入一列......或者可能删除堆栈面板?
  • “可能删除堆栈面板”。而已。将按钮直接放入网格并分配适当的Grid.RowGrid.Column 值。
  • StackPanel 将为内部的项目分配尽可能少的空间,而 Grid 将分配最大的可用空间,但是如果您将 Grid 放在 StackPanel 内部,则 Grid 得到只有StackPanel 给出的。
  • 感谢您的 cmets!

标签: wpf xaml button orientation stackpanel


【解决方案1】:

把它变成这样:

<Grid Background="AliceBlue">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/> //width will be divided equally among 6 columns
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            //Row definations will go here
        </Grid.RowDefinitions>
        <Button Content="a1" Grid.Column="0" />
        <Button Content="a2" Grid.Column="1" />
        <Button Content="a1" Grid.Column="2" />
        <Button Content="a2" Grid.Column="3" />
        <Button Content="a1" Grid.Column="4" />
        <Button Content="a2" Grid.Column="5" />
    </Grid>

【讨论】:

  • 好。那么您可能可以分享您的答案或接受此处提到的答案。
【解决方案2】:

我认为你需要让每个按钮像一列一样

<Button x:Name="a1" Content="a1" Grid.Column="0" />
<Button x:Name="a2" Content="a2" Grid.Column="1" />

因此,在 Stackpanel 中定义一个网格,例如:

<StackPanel>
<Grid>
     <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        ....
    </Grid.ColumnDefinitions>
</Grid>
<Buttons Grid.Column="..."/>
</StackPanel>

【讨论】:

  • 你能提供你的网格定义吗?
猜你喜欢
  • 2020-03-30
  • 2013-09-25
  • 2013-06-07
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多