• 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"/>
    

     

  • 相关阅读:
    [例程]string.trim().length()的用法
    用各种look and feel打造swing界面
    深入浅出Java多线程(1)方法 join
    eclipse中cvs使用配置
    什么时候用Vector, 什么时候改用ArrayList?
    array,vertor,arraylist,hashable,hashmap等几个易混淆概念的区别
    java.lang.Class.getResource()这哥个方法主要是做什么用
    织梦dedecms实现按照字母搜索的实现方法
    浅析JTable与TableModel、TableCellRenderer、TableCellEditor接口——使用JComboBox显示单元格的值
    用java –jar 命令运行Jar包
  • 原文地址:https://www.cnblogs.com/xiaokang088/p/2032778.html
Copyright © 2020-2023  润新知