3

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

1 回答 1

4

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

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

于 2010-09-30T12:54:26.930 回答