Окно, которое должно быть полноэкранным в приложении сенсорного экрана WPF, перемещается при прокрутке внутреннего списка - PullRequest
3 голосов
/ 01 июля 2010

Я пишу приложение с графическим интерфейсом для запуска на устройстве с сенсорным экраном с использованием VB.NET и WPF - оно всегда должно быть полноэкранным, как приложение для киоска;окно не должно иметь возможности изменять размеры или перемещать каким-либо образом.Окно содержит 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>  

1 Ответ

4 голосов
/ 30 сентября 2010

Я считаю, что если вы обрабатываете событие OnManipulationBoundaryFeedback(object sender, TouchEventArgs e) в списке и устанавливаете свойство e.Handled true, это должно предотвратить "отскок" окна приложения.

Это также можетбыло возможно (я не думал об этом до сих пор) обработать событие на уровне окна, так как это пузырьковое событие, чтобы уменьшить вероятность любых других элементов управления, вызывающих такое же поведение.

...