Подтвердить что ты не робот

Есть ли способ включить прокрутку экрана в 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>

4b9b3361

Ответ 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