为什么这个dockpanel不起作用?

时间:2014-03-19 16:40:14

标签: wpf xaml

我有这个xml:

 <DockPanel x:Name="TitleBar"  MouseDown="TitleBar_MouseDown" Background="Red">
        <Canvas DockPanel.Dock="Left">
            <Image Stretch="Fill" Width="295" Height="47" Source="/Resources\Images\TopPanel\Toplogo.png"/>
        </Canvas>
        <Canvas DockPanel.Dock="Right" Width="90">
            <Button Canvas.Left="70" DockPanel.Dock="Right" Width="16" Height="14" Style="{StaticResource TransparentButton}" Click="ButtonCloseWindowClick">
                <Image Height="14" VerticalAlignment="Top" >
                    <Image.Style>
                        <Style TargetType="{x:Type Image}">
                            <Setter Property="Source" Value="/Resources/Images/Toppanel/but_close.png"/>
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Source"  Value="/Resources/Images/Toppanel/but_close_roll.png"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Image.Style>
                </Image>
            </Button>
            <Image Canvas.Left="50" Stretch="Fill" Width="2" Height="33" Source="/Resources/Images/Toppanel/divider.png"/>
            <Button Canvas.Left="40" Width="16" Height="14" Style="{StaticResource TransparentButton}" Click="ButtonMinimizedClick" >
                <Image >
                    <Image.Style>
                        <Style TargetType="{x:Type Image}">
                            <Setter Property="Source" Value="/Resources/Images/Toppanel/but_minimise.png"/>
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Source"  Value="/Resources/Images/TopPanel/but_minimise_roll.png"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Image.Style>
                </Image>
            </Button>
            <Image  Canvas.Left="30"  Stretch="Fill" Width="2" Height="33" Source="/Resources/Images/Toppanel/divider.png"/>
            <Button   Canvas.Left="10" Canvas.Top="0"  Width="16" Height="14" Style="{StaticResource TransparentButton}" Click="ButtonInfoClick">
                <Image >
                    <Image.Style>
                        <Style TargetType="{x:Type Image}">
                            <Setter Property="Source" Value="/Resources/Images/Toppanel/but_info.png"/>
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Source"  Value="/Resources/Images/TopPanel/but_info_roll.png"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Image.Style>
                </Image>
            </Button>
            <Image  Canvas.Left="0" Canvas.Top="0"  Stretch="Fill" Width="2" Height="33" Source="/Resources/Images/Toppanel/divider.png"/>



        </Canvas>


    </DockPanel>

根据我的理解,第一个画布应显示在左侧,另一个画布应显示在右侧大小的窗口上,但它们都显示在左侧大小上。为什么dockpanel不起作用?

1 个答案:

答案 0 :(得分:1)

由于第二个CanvasDockPanel的最后一个孩子而LastChildFill为真(默认值):

  

如果将LastChildFill属性设置为true(默认设置),则DockPanel的最后一个子元素始终填充剩余空间,而不管您在最后一个子元素上设置的任何其他停靠值。

针对LastChildFill="False"

设置DockPanel
<DockPanel x:Name="TitleBar" ... LastChildFill="False">

应解决您的问题