Есть ли способ включить сенсорную прокрутку в WPF ScrollViewer? - PullRequest
43 голосов
/ 13 мая 2010

Я пытаюсь создать форму в приложении 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>

Ответы [ 2 ]

69 голосов
/ 31 мая 2011

Вы должны использовать прикрепленные свойства:

  • ScrollViewer.PanningMode
  • ScrollViewer.PanningDeceleration
  • ScrollViewer.PanningRatio

PanningMode по умолчанию имеет значение None в стиле ScrollViewer по умолчанию, но установка его в другое значение включит сенсорную прокрутку. В настоящее время я изучаю использование этой функции в своем приложении и ищу хорошее значение замедления и коэффициента ... Вероятно, мне просто нужно проверить их, чтобы найти что-то, что хорошо работает.

10 голосов
/ 14 мая 2010

Если вы используете .NET 4.0, есть отличная вещь, недавно выпущенная командой Microsoft !! Они перенесли все эти приятные элементы управления Surface на Win7. SurfaceScrollViewer действительно классный, как iPhone. Установите этот инструментарий и запустите проект SurfaceWin7Touch из шаблона проекта VS2010. http://www.microsoft.com/en-us/download/details.aspx?id=26716

...