【发布时间】:2014-10-17 15:29:06
【问题描述】:
您好,我正在开发一个 WPF 应用程序,我需要在窗口顶部显示 DockPanel,但它只会显示鼠标指向该位置,(就像 Windows 8.1 标题栏一样,如果您将鼠标指向在顶部,十字按钮和最小化按钮出现),如果鼠标移出窗口的一侧和其他地方,子元素<StackPanel> 将覆盖整个窗口并显示数据,但只要鼠标指向顶部位置UI,我应该显示标题。我附上了一张我的想法的图片。任何人都可以提出一些建议吗?
经过大量谷歌搜索后,我发现获取屏幕分辨率并减去窗口的高度和宽度会给我想要的结果。但我认为这不是最终的解决方案,必须有其他方法。
按照建议我尝试过这种方式
<Grid x:Name="gdMainWindow" >
<Grid.RowDefinitions>
<RowDefinition Height="20" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Rectangle Grid.Row="0" Fill="Transparent" Height="20"
MouseEnter="Dock_MouseEnter"
MouseLeave="dp_MouseLeave"
/>
<DockPanel Grid.Row="0" Background="Black" >
<Image Source="Images/candle-blownout.jpg" Stretch="UniformToFill"/>
</DockPanel >
而在Dock_MouseEnter
private void Dock_MouseEnter ( object sender, MouseEventArgs e )
{
dp.Visibility = Visibility.Visible;
}
private void dp_MouseLeave ( object sender, MouseEventArgs e )
{
dp.Visibility = Visibility.Collapsed;
}
但是它将顶部的 20 像素空间留为白色,图像不会调整到第一行。
【问题讨论】:
-
当我这样做时,我只是在顶部抛出一个 5px 矩形,填充 = 透明以实现 hittestvisibility 和 mouseenter 事件触发器以使您的菜单在其顶部可见,然后在菜单上有一个MouseLeave 触发器再次折叠它。