【问题标题】:why this dockpanel doesn't work?为什么这个停靠面板不起作用?
【发布时间】:2014-03-20 01:00:49
【问题描述】:

我有这个 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>

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

【问题讨论】:

  • 我已经回滚了您的编辑,因为您完全改变了问题和问题。我建议编辑问题并在最后添加其他信息

标签: wpf xaml


【解决方案1】:

因为第二个CanvasDockPanel 的最后一个孩子并且LastChildFill 为真(默认值):

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

设置LastChildFill="False"DockPanel

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

应该能解决你的问题

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2017-05-03
    • 2011-07-19
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多