0

我正在寻找一个 WPF 选项,它在侧面显示面板,并允许您固定/取消固定它们。基本上这意味着一个窗口,主控件在中央,在该主控件的左右两侧有多个不同的面板。这些面板默认是折叠的,只有它们的标题可见,如果我将鼠标悬停在它们上面,它们会在主控件上展开(不取代主控件),但我也可以选择固定这个面板,它保持永久展开出,这一次强制主中心控件调整大小。

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

到目前为止,基本上我自己关于如何做到这一点的想法涉及以编程方式将面板从一个固定控件移动到另一个非固定控件,但这听起来很丑陋,我喜欢其他选择。

4

1 回答 1

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时,他们跳到各自的对接网格列。

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

  • 在右侧添加一个 Grid 列 +HorizontalAlignment="Right" 将为您提供右侧面板。
  • 同样使用(而不是列)和垂直对齐 将添加顶部/底部引脚功能。
于 2011-09-11T06:56:39.023 回答