zoukankan      html  css  js  c++  java
  • DockPanel—最守规矩布局控件

    DockPanel—最守规矩布局控件

    这样子的一个DockPanel:

        <DockPanel LastChildFill="True">
    
            <TextBlock  Text="1.Dock.Top" DockPanel.Dock="Top" Background="Bisque" Margin="0" Height="50"  VerticalAlignment="Top"/>
    
            <TextBlock  Text="2.Dock.Bottom" DockPanel.Dock="Bottom" Background="GreenYellow"   Margin="0" Height="20" VerticalAlignment="Bottom"/>
    
            <TextBlock  Text="3.Dock.Left" DockPanel.Dock="Left" Background="Tan"  Width="100"  />
    
            <Grid DockPanel.Dock="Right" x:Name="gridRight"  Width="200">
    
                <TextBlock  Text="4.Dock.Right" Background="Honeydew"    HorizontalAlignment="Stretch"/>
    
            </Grid>
    
            <TextBlock  Text="last" Background="Aquamarine" />
    
        </DockPanel>
    

     

    每个元素【守】 这一个边,很乖,中间的那个家伙可以趁父元素LastChildFill="True"的福分,独占剩余的区域。

    守规矩因为两点:

    1. 元素只停靠某一个边,最后一个元素填充空白区域
    2. 严格遵从先来后到原则,尤其是【争议区域】

    利用第一点,将边缘的空间缩进,让中间区域占用大量空间。

            <Grid DockPanel.Dock="Right" x:Name="gridRight"  Width="200">
    
                <TextBlock  Text="4.Dock.Right" Background="Honeydew"    HorizontalAlignment="Stretch"/>
    
                <ToggleButton Content="->" Height="23" HorizontalAlignment="Left" Margin="0,50,0,0"  Name="btnRight" VerticalAlignment="Top" Width="23"  >
    
                    <ToggleButton.Triggers>
    
                        <EventTrigger   RoutedEvent="ToggleButton.Checked">
    
                            <StopStoryboard BeginStoryboardName="collapsed" />
    
                            <BeginStoryboard x:Name="expand"   HandoffBehavior="SnapshotAndReplace">
    
                                <Storyboard  >
    
                                    <DoubleAnimation      Duration="00:00:0.10 "  Storyboard.TargetName="gridRight" Storyboard.TargetProperty="Width" To="50" />
    
                                    <ObjectAnimationUsingKeyFrames      Storyboard.TargetProperty="Content"   >
    
                                        <DiscreteObjectKeyFrame Value="->"  KeyTime="00:00:0.10" />
    
                                    </ObjectAnimationUsingKeyFrames>
    
                                </Storyboard>
    
                            </BeginStoryboard>
    
                        </EventTrigger>
    
                        <EventTrigger RoutedEvent="ToggleButton.Unchecked">
    
                            <StopStoryboard BeginStoryboardName="expand" />
    
                            <BeginStoryboard x:Name="collapsed"   HandoffBehavior="SnapshotAndReplace">
    
                                <Storyboard  >
    
                                    <DoubleAnimation       Duration="00:00:0.10 "    Storyboard.TargetName="gridRight" Storyboard.TargetProperty="Width" To="200" />
    
                                    <ObjectAnimationUsingKeyFrames      Storyboard.TargetProperty="Content"   >
    
                                        <DiscreteObjectKeyFrame Value="<-"  KeyTime="00:00:0.10" />
    
                                    </ObjectAnimationUsingKeyFrames>
    
                                </Storyboard>
    
                            </BeginStoryboard>
    
                        </EventTrigger>
    
                    </ToggleButton.Triggers>
    
                </ToggleButton>
    
            </Grid>
    

    利用第二点,可以根据需要改变布局。

    例如,左侧和下侧 有一个交叉的区域,如果想把这个区域划归左侧,那就把左侧的元素放在  下侧元素的前面,如下:

    <TextBlock  Text="3.Dock.Left" DockPanel.Dock="Left" Background="Tan"  Width="100"  />
    
    <TextBlock  Text="2.Dock.Bottom" DockPanel.Dock="Bottom" Background="GreenYellow"   Margin="0" Height="20" VerticalAlignment="Bottom"/>
    

     

  • 相关阅读:
    1026 Table Tennis (30)
    1029 Median
    1025 PAT Ranking (25)
    1017 Queueing at Bank (25)
    1014 Waiting in Line (30)
    1057 Stack (30)
    1010 Radix (25)
    1008 Elevator (20)
    字母大小写转换
    Nmap的基础知识
  • 原文地址:https://www.cnblogs.com/xiaokang088/p/2032778.html
Copyright © 2011-2022 走看看