Есть ли способ включить прокрутку экрана в WPF ScrollViewer?
Я пытаюсь создать форму в приложении WPF, которая позволит пользователю использовать iPhone-подобные жесты для прокрутки доступных полей. Итак, я поместил все элементы своей формы внутри StackPanel внутри ScrollViewer, и полоса прокрутки отображается так, как ожидалось, когда на экране слишком много элементов, которые будут отображаться на экране.
Однако, когда я пытаюсь проверить это на своем устройстве с сенсорным экраном, жест панорамирования (поместить палец вниз и перетащить его вверх) не сдвинет область видимости вниз, как я ожидал.
Когда я просто добавляю несколько элементов внутри ListView, жесты касания работают просто отлично. Есть ли способ включить такое же поведение в ScrollViewer?
Мое окно структурировано следующим образом:
<Window x:Class="TestTouchScrolling.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" Loaded="Window_Loaded">
<Grid>
<ScrollViewer Name="viewer" VerticalScrollBarVisibility="Auto">
<StackPanel Name="panel">
<StackPanel Orientation="Horizontal">
<Label>Label 1:</Label>
<TextBox Name="TextBox1"></TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label>Label 2:</Label>
<TextBox Name="TextBox2"></TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label>Label 3:</Label>
<TextBox Name="TextBox3"></TextBox>
</StackPanel>
<!-- Lots more like these -->
</StackPanel>
</ScrollViewer>
</Grid>
Ответы
Ответ 1
Вы должны использовать прилагаемые свойства:
- ScrollViewer.PanningMode
- ScrollViewer.PanningDeceleration
- ScrollViewer.PanningRatio
В стиле PanningMode по умолчанию используется значение None в стиле по умолчанию ScrollViewer, но при настройке его на другое значение будет отображаться сенсорная прокрутка. В настоящее время я изучаю эту функцию в своем приложении, и я ищу хорошее значение торможения и отношения... Мне, вероятно, просто придется проверить их, чтобы найти что-то, что хорошо работает.
Ответ 2
Если вы используете .NET 4.0, есть замечательная вещь, недавно выпущенная командой Microsoft! Они портировали все эти прекрасные средства управления поверхностью Win7. SurfaceScrollViewer действительно классный, как iphone one. Установите этот инструментарий и запустите проект SurfaceWin7Touch из шаблона проекта VS2010
http://www.microsoft.com/en-us/download/details.aspx?id=26716