2014-03-19 164 views
1

我有这样的XML:为什么这个dockset不起作用?

<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> 

根据我的理解,第一画布应该显示在左侧,而另一个画布应该在窗口的右侧大小被显示,但在左手他们都表示尺寸。为什么dockset不起作用?

+0

我回滚您的编辑,你完全改变的问题和解决问题。我会建议编辑问题并在末尾添加其他信息 – dkozl

回答

1

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

如果设置LastChildFill属性为true,这是默认设置,DockPanel中的最后一个子元素总是填充剩余空间,而不管您在最后一个子元素上设置的任何其他码头值。

设置LastChildFill="False"DockPanel

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

应该解决您的问题

+0

它不起作用。请看我编辑的问题。 – mans