WPF布局(Layout)

StackPanel

特点:子元素一行或者一列排列

<StackPanel Background="#ECE9D8">
   <TextBlock Margin="3">Look for:</TextBlock>
   <ComboBox  Margin="3"/>
   <TextBlock Margin="3">Filtered by:</TextBlock>
   <ComboBox  Margin="3"/>
   <Button    Margin="3,5">Search</Button>
   <CheckBox  Margin="3">Search in titles only</CheckBox>
   <CheckBox  Margin="3">Match related words</CheckBox>
   <CheckBox  Margin="3">Search in previous results</CheckBox>
   <CheckBox  Margin="3">Highlight search hits (in topics)</CheckBox>
< /StackPanel>

image_thumb


WrapPanel

特点:和StackPanel类似,元素一行或一列排列,不同的是,如果行或列的剩余空间不够,会自动排列到下一行或下一列

<WrapPanel Background="Beige">
   <Button>One</Button>
   <Button>Two</Button>
   <Button>Three</Button>
   <Button>Four</Button>
   <Button>Five</Button>
   <Button>Six</Button>
   <Button>Seven</Button>
   <Button>Eight</Button>
< /WrapPanel>

image_thumb[1]



DockPanel

特点:安排每个子元素停靠在特定的边缘

  1. 默认情况下,最后一个子元素占满剩余空间,由LastChildFill控制,默认为True,如果想留出剩余控件,设置为False


<DockPanel>
         <Button DockPanel.Dock="Left">Left</Button>
         <Button DockPanel.Dock="Right">Right</Button>
         <Button DockPanel.Dock="Top">Top</Button>
         <Button DockPanel.Dock="Bottom">Bottom</Button>
         <Button>Fill</Button>
     </DockPanel>

image


Grid

特点:子元素按单元格排列,位置由附加属性Row和Column确定


UniformGrid

特点:Grid的简化版,不需要显式定义行和列,会根据子元素的数量自动分配。

<UniformGrid TextBlock.TextAlignment="Center">
         <TextBlock Text="X" />
         <TextBlock Text="O"/>
         <TextBlock Text="X"/>
         <TextBlock Text="X"/>
         <TextBlock Text="X"/>
         <TextBlock Text="O"/>
         <TextBlock Text="O"/>
         <TextBlock Text="O"/>
         <TextBlock Text="X"/>
     </UniformGrid>

image


Canvas

特点: canvas是最简单的Panel控件,它允许精确控制子元素相对于canvas边缘的位置。

<Canvas Background="Yellow" Width="150" Height="100">
   <TextBlock Canvas.Left="10" Canvas.Top="20">Hello</TextBlock>
   <TextBlock Canvas.Right="10" Canvas.Bottom="20">world!</TextBlock>
</Canvas>

image


ViewBox

特点:ViewBox自动缩放内容填满可获得的空间,只允许有一个子元素

注意:ViewBox不属于Panel,它继承自Decorator

image

image

<Viewbox>
         <Canvas Width="18" Height="18" VerticalAlignment="Center">
             <Ellipse Canvas.Left="1" Canvas.Top="1" Width="16" Height="16"
              Fill="Yellow" Stroke="Black" />
             <Ellipse Canvas.Left="4.5" Canvas.Top="5" Width="2.5" Height="3"
                          Fill="Black" />
             <Ellipse Canvas.Left="11" Canvas.Top="5" Width="2.5" Height="3"
                          Fill="Black" />
             <Path Data="M 5,10 A 3,3 90 0 0 13,10" Stroke="Black" />
         </Canvas>
     </Viewbox>


ScrollViewer

特点:允许通过滚动的方式显示一个尺寸过大的content,只允许一个子元素

image

<ScrollViewer HorizontalScrollBarVisibility="Auto">
         <Ellipse Fill="Green" Height="1000" Width="2000" />
     </ScrollViewer>

posted @   我本无心怎给你情  阅读(147)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示