wpf - 滚动内部列表框时,WPF 触摸屏应用程序中本应全屏显示的窗口正在移动

标签 wpf vb.net touchscreen vb.net-2010

我正在使用 VB.NET 和 WPF 编写一个在触摸屏设备上运行的 GUI 应用程序——它必须始终全屏显示,就像信息亭应用程序一样;窗口不得以任何方式调整大小或移动。该窗口包含一个 ListBox,用户当前可以通过在列表中拖动来滚动浏览该列表框。我看到的问题是,当用户在列表中拖动时,整个窗口会移动一点,露出下面的桌面,然后在用户停止拖动后弹回原位。我无法弄清楚如何在保持窗口静止的同时仍然允许用户拖动 ListBox 以查看所有列表项。这是我的代码的简化版本:

<Window  
  x:Class="MainWindow"  
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="MainWindow"  
  WindowStyle="None"  
  WindowState="Maximized"  
  WindowStartupLocation="CenterScreen"  
  KeyboardNavigation.TabNavigation="None"  
  Topmost="True"  
  Focusable="False"  
  ResizeMode="NoResize"  
  ShowInTaskbar="False"  
  MaxHeight="1080px"  
  MaxWidth="1920px">  
  <Grid>  
     <ListBox
       x:Name="docList"  
       ScrollViewer.HorizontalScrollBarVisibility="Hidden"  
       ScrollViewer.VerticalScrollBarVisibility="Hidden"
       BorderThickness="0">  
       <TextBlock Text="Item1" />  
       <TextBlock Text="Item2" />  
       <TextBlock Text="Item3" />  
       <TextBlock Text="Item4" />  
       <TextBlock Text="Item5" />  
       <TextBlock Text="Item6" />  
     </ListBox>
  </Grid>  
</Window>  

最佳答案

我相信,如果您处理列表框上的 OnManipulationBoundaryFeedback(object sender, TouchEventArgs e) 事件,并设置 e.Handled 属性 true,这应该可以防止应用程序窗口的“弹跳”。

也有可能(我直到现在才想到)在窗口级别处理事件,因为它是一个冒泡事件,以减少任何其他控件导致相同行为的可能性。

关于wpf - 滚动内部列表框时,WPF 触摸屏应用程序中本应全屏显示的窗口正在移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3153990/

相关文章:

javascript - 从 Google ReCaptcha 抓取中获取错误的验证码图像

c# - 在 WPF 程序中防止电视/显示器老化

c# - WPF 绑定(bind)不更新 XAML 但调用了 PropertyChanged

c# - 当托管在 VSTO/Outlook 加载项中的 ElementHost 中时,WPF 文本框不允许撤消

xml - 在 VB.NET XML 文字中设置属性值

c# - 是否可以单击 Button 而不会失去对 TextBox 的关注?

c# - 组合框数据绑定(bind)到 selectedvalue 事件

mysql - 通过datagrid View 删除数据mySQL Vb.net

jquery - 尝试用 jQuery 实现滚动惯性

黑莓 Storm 触摸事件