WPF固定选项,不填充高度

时间:2011-09-11 04:40:47

标签: wpf docking avalondock

我正在寻找一个WPF选项,它可以显示侧面的面板,并允许您固定/取消固定它们。基本上这意味着一个窗口,主控制器位于中央,主控制器的左侧和右侧有多个不同的面板。默认情况下这些面板是折叠的,只有它们的标题可见,如果我将它们悬停在它们上面,它们会扩展到主控件上(不会移动主控件),但是我也可以选择固定此面板,它可以永久地扩展out,这次迫使主要中心控制器调整大小。

现在这听起来很像大多数对接控制选项,事实上我已经看过AvalonMixModes Synergy,但这些选项的问题在于它们的面板填满了整个高度。当我将鼠标悬停在它上面时,我想要一个特定高度的面板出来,我不希望它填写到屏幕上,我真的找不到任何其他的东西。其他人见过这样的东西吗?

基本上我自己关于如何做到这一点的想法涉及以编程方式将面板从一个固定控件移动到另一个非固定控件,但这听起来很疯狂,我喜欢替代品。

1 个答案:

答案 0 :(得分:0)

这是一个纯XAMl示例,说明如何实现Pin / Unpin功能。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>


    <DockPanel Grid.Column="1">
        <Label Content="Main Content Area" FontSize="22"
               VerticalAlignment="Center" HorizontalAlignment="Center"/>
    </DockPanel>

    <StackPanel HorizontalAlignment="Left">
        <StackPanel.Style>
            <Style>
                <Setter Property="Grid.Column" Value="1"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=LeftPinBtn,Path=IsChecked}" Value="True">
                        <Setter Property="Grid.Column" Value="0"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </StackPanel.Style>
        <ToggleButton Content="Pin/Unpin" x:Name="LeftPinBtn"/>
    </StackPanel>

</Grid>

在上面的代码中,

  • 左侧面板位于(浮动)主内容的同一网格列上。
  • 选中 ToggleButton 时,会跳转到各自的位置 对接网格列。

您可以自定义此示例&amp;包括将显示/隐藏面板的鼠标悬停事件。

  • 向右添加网格列+ HorizontalAlignment="Right" 会给你正确的面板。
  • 同样使用(而不是列)&amp;的 VerticalAlignment 将添加顶部/底部引脚功能。