繁体   English   中英

StackPanel 逆序 - WPF

[英]StackPanel reverse order - WPF

我正在尝试颠倒子项出现在 StackPanel 中的顺序。 我希望能够将新的孩子(在运行应用程序时)添加到列表的顶部而不是底部。 我尝试使用各种 XAML 代码,但没有任何效果。

最简单的方法是什么?

利用:

stackPanel.Children.Insert(0, uiElement);

这会将元素插入列表的头部。

来源

我找到了一种方法,以相反的顺序堆叠元素,而不是使用DockPanel将它们列为子元素。 这应该允许你完全在 XAML 中做你想做的事(不需要代码隐藏)。 如果您要绑定到一个集合并且不想颠倒集合的顺序或不想在集合的开头插入项目,这可能会有所帮助。

当您在多个子元素(例如DockPanel.Dock="Bottom" )上指定Dock附加属性时,它将按顺序将它们堆叠在面板的指定边缘上,这样第一个子元素将最接近该边缘。

自下而上堆叠

因此,要从下到上堆叠元素,请将所有子元素的Dock属性设置为Bottom并为它们指定固定高度。 这是一个例子:

<UserControl x:Class="UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" d:DesignHeight="200" d:DesignWidth="200">
    <DockPanel LastChildFill="False">
        <Button DockPanel.Dock="Bottom" Height="40" Content="B 1" />
        <Button DockPanel.Dock="Bottom" Height="40" Content="B 2" />
        <Button DockPanel.Dock="Bottom" Height="40" Content="B 3" />
    </DockPanel>
</UserControl>

请注意LastChildFill="False"的使用 - 默认情况下, DockPanel将拉伸最后一项以填充剩余空间。

这呈现如下:

图 2

从右到左堆叠

这同样适用于元素从右到左的排序

<UserControl x:Class="DigitalElectronics.UI.Controls.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" d:DesignHeight="200" d:DesignWidth="200">
    <DockPanel LastChildFill="False">
        <Button DockPanel.Dock="Right" Width="40" Content="B 1" />
        <Button DockPanel.Dock="Right" Width="40" Content="B 2" />
        <Button DockPanel.Dock="Right" Width="40" Content="B 3" />
    </DockPanel>
</UserControl>

图 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM