【发布时间】:2016-08-20 02:16:36
【问题描述】:
我目前正在使用 WPF 开发一个应用程序。 我不得不注意到 ScrollViewer 功能与 Windows Store App 变体相比的差异。
当我位于屏幕边缘和 ScrollViewer 的边缘时,我想滑动以便远离边缘。我看到 Windows 桌面或菜单栏(在屏幕底部时)。 是否有防止这种滚动行为发生的解决方案?当您滚动到屏幕边缘然后被撞回来并看到下面的一些 Windows 平台时,这相当烦人(而且丑陋!)。 此行为已在 Windows Store App ScrollViewer 中修复。
我尝试覆盖 ScrollChanged 并检查 f.e. horizontalOffset == 0 && horizontalChange < 0 并在这种情况下返回。但是这个检查似乎不起作用(从那时起可能已经太晚了)。
而且我似乎找不到 Windows 应用商店应用程序解决此问题的方法。
也许你们有什么想法?
编辑: 在 .NET 4.5.1 中复制 WPF 项目
这段 XAML 重新创建了我在 WPF 中的问题。但是在 Windows Store App 中,问题似乎并不存在。
当滚动到和/或越过应用程序的边缘时,如何防止这种行为?
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" ResizeMode="NoResize" WindowState="Maximized" WindowStyle="None">
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" PanningMode="Both">
<Rectangle Height="2500" Stroke="Black" Width="3500" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0,0.5">
<GradientStop Color="#FF00FF68" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
<GradientStop Color="#FF95FF00" Offset="0.506"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</ScrollViewer>
</Grid>
</Window>
【问题讨论】:
-
您能否提供您描述的行为的屏幕截图?
-
@Richard 更新澄清。在左侧,您可以看到我的应用程序的边缘。它还会自动生成这个可怕的菜单栏。这两种行为都是不受欢迎的,并且都只发生在 WPF 中而不是 Windows 应用商店应用程序中。
-
啊我明白你在说什么了,WindowState 对你的应用有什么价值?
-
@Richard WindowsState = "Maximized" -- ResizeMode = "NoResize" -- WindowStyle = "None"
-
@Sheridan 这不是这里的问题。问题甚至不是任务栏(它甚至不是我操作系统上的自动隐藏)。 WPF 的 ScrollViewer 会在您滚动应用程序时显示这些内容。查看图像的左侧。您会看到我的应用程序的边缘和一个浅蓝色条(实际边缘),左侧是我正在使用的 Windows 桌面(的一部分)。
标签: c# wpf scroll windows-store-apps scrollviewer