WPF基础五:UI①布局元素StackPanel

目录

StackPanel

StackPanel类

StackPanel.Orientation:指示子元素的堆叠维度

HorizontalAlignment:水平对齐方式

VerticalAlignment:垂直对齐方式

范例:

C#代码

StackPanel 控件的滚动条


StackPanel

 

将子元素排列成水平或垂直的一行。


StackPanel类

名称备注权限
OrientationProperty标识 Orientation 依赖项属性。public

 

名称备注权限
CanHorizontallyScroll获取或设置一个值,该值指示内容能否水平滚动public
CanVerticallyScroll获取或设置一个值,该值指示内容能否垂直滚动public
ExtentHeight获取包含盘区垂直大小的一个值public
ExtentWidth获取包含盘区水平大小的值public
HasLogicalOrientation获取一个值,该值指示此 StackPanel 是水平方向还是垂直方向protected
HorizontalOffse获取一个值,该值包含滚动内容的水平偏移量public
LogicalOrientation获取一个值,该值表示 Orientation 的 StackPanelpublic
Orientation获取或设置一个值,该值指示子元素的堆叠维度public
ScrollOwner获取或设置一个值,该值标识控制此 StackPanel 中的滚动行为的容器public
VerticalOffset获取包含滚动内容的垂直偏移量的值public
ViewportHeight获取包含内容视区垂直大小的值public
ViewportWidth获取包含内容视区水平大小的值public
名称备注权限
ArrangeOverride排列 StackPanel 元素的内容protected
LineDown将内容向下滚动一个逻辑单位public
LineLeft将内容向左滚动一个逻辑单位public
LineRight将内容向右滚动一个逻辑单位public
LineUp将内容向上滚动一个逻辑单位public
MakeVisible滚动到指定坐标并使该 Visual 部分可见public
MeasureOverride测量 StackPanel 的子元素,以便准备在 ArrangeOverride(Size) 处理过程中排列它们protected
MouseWheelDown向下逻辑滚动内容以响应鼠标滚轮按钮的单击操作public
MouseWheelLeft向左逻辑滚动内容以响应鼠标滚轮按钮的单击操作public
MouseWheelRight向右逻辑滚动内容以响应鼠标滚轮按钮的单击操作public
MouseWheelUp向上逻辑滚动内容以响应鼠标滚轮按钮的单击操作public
PageDown将内容向下逻辑滚动一页public
PageLeft将内容向左逻辑滚动一页public
PageRight将内容向右逻辑滚动一页public
PageUp将内容向上逻辑滚动一页public
SetHorizontalOffset设置 HorizontalOffset 属性的值public
SetVerticalOffset设置 VerticalOffset 属性的值public

  • StackPanel包含UIElement对象的集合  ,这些对象位于 Children 属性中。
  • StackPanel中包含内容的HorizontalAlignment 、VerticalAlignment的默认值都是 stretch。
  • 默认情况下,Panel 元素不接收焦点。 若要强制 panel 元素以接收焦点,请将 Focusable 属性设置为 true 。
  • StackPanel 实现 IScrollInfo 接口以支持逻辑滚动。 逻辑滚动用于滚动到逻辑树中的下一个元素。 这与物理滚动相反,后者按给定方向按定义的物理增量滚动内容。 如果需要物理滚动而不是逻辑滚动,请将StackPanel 包含在 ScrollViewer 中,并将其 CanContentScroll 属性设置为 false 。
     

StackPanel.Orientation:指示子元素的堆叠维度

  • Horizontal:水平布置。
  • Vertical:垂直布置。

HorizontalAlignment:水平对齐方式

  • Left
  • Center
  • Right
  • Stretch

VerticalAlignment:垂直对齐方式

  • Top
  • Center
  • Bottom
  • Stretch

 


范例:

<Window x:Class="StackPanelDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:StackPanelDemo"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <StackPanel Orientation="Horizontal">
            <Button Content="Btn1" HorizontalAlignment="Stretch" MaxWidth="500" MinWidth="100" />
            <Button Content="Btn2" HorizontalAlignment="Stretch" MaxWidth="500" MinWidth="100"/>
            <Button Content="Btn3" HorizontalAlignment="Stretch" MaxWidth="500" MinWidth="100"/>
        </StackPanel>
    </Grid>
</Window>

修改 Orientation="Vertical"


C#代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace StackPanelDemo
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            StackPanel stackPanel = new StackPanel();
            stackPanel.Orientation = Orientation.Vertical;

            Button button1 = new Button();
            Button button2 = new Button();
            Button button3 = new Button();

            button1.Height = 200;
            button1.MinWidth = 100;
            button1.MaxWidth = 500;
            button1.HorizontalAlignment = HorizontalAlignment.Stretch;
            button1.Content = "Btn1";

            button2.Height = 200;
            button2.MinWidth = 100;
            button2.MaxWidth = 500;
            button2.HorizontalAlignment = HorizontalAlignment.Stretch;
            button2.Content = "Btn2";

            button3.Height = 200;
            button3.MinWidth = 100;
            button3.MaxWidth = 500;
            button3.HorizontalAlignment = HorizontalAlignment.Stretch;
            button3.Content = "Btn3";

            stackPanel.Children.Add(button1);
            stackPanel.Children.Add(button2);
            stackPanel.Children.Add(button3);

            ((this as Window).Content as Grid).Children.Add(stackPanel);

        }
    }
}

StackPanel 控件的滚动条

<Window
    x:Class="StackPanelDemo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:StackPanelDemo"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid>
        <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
            <StackPanel x:Name="sp1"  Orientation="Vertical">
                <Button
                    Height="200"
                    MinWidth="100"
                    MaxWidth="500"
                    HorizontalAlignment="Stretch"
                    Content="Btn1" />
                <Button
                    Height="200"
                    MinWidth="100"
                    MaxWidth="500"
                    HorizontalAlignment="Stretch"
                    Content="Btn2" />
                <Button
                    Height="200"
                    MinWidth="100"
                    MaxWidth="500"
                    HorizontalAlignment="Stretch"
                    Content="Btn3" />
            </StackPanel>
        </ScrollViewer>
    </Grid>
</Window>

其他一些方法如LineUp()等,必须实现System.Windows.Controls.Primitives.IScrollInfo接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值