Сенсорная прокрутка DocumentViewer

Я использую .NET 3.5, поэтому у меня нет всех прелестей сенсорного экрана. Я создал свой собственный сенсорный экран ScrollViewer, который работает нормально. Я хочу включить это в шаблон DocumentViewer, но это не работает. Вот мой вариант шаблона:

<Style TargetType="{x:Type DocumentViewer}">
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" />
    <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DocumentViewer}">
                <Border BorderThickness="{TemplateBinding BorderThickness}" 
                        BorderBrush="{TemplateBinding BorderBrush}"
                        Focusable="False">
                    <Grid KeyboardNavigation.TabNavigation="Local">
                        <Grid.Background>
                            <SolidColorBrush Color="{DynamicResource ControlLightColor}" />
                        </Grid.Background>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="*" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <ToolBar ToolBarTray.IsLocked="True"
                                 KeyboardNavigation.TabNavigation="Continue"
                                 Visibility="Collapsed">
                            <Button Command="ApplicationCommands.Print"
                                    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                                    Content="Print" />
                            <Button Command="ApplicationCommands.Copy"
                                    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                                    Content="Copy" />
                            <Separator />
                            <Button Command="NavigationCommands.IncreaseZoom"
                                    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                                    Content="Zoom In" />
                            <Button Command="NavigationCommands.DecreaseZoom"
                                    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                                    Content="Zoom Out" />
                            <Separator />
                            <Button Command="NavigationCommands.Zoom"
                                    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                                    CommandParameter="100.0"
                                    Content="Actual Size" />
                            <Button Command="DocumentViewer.FitToWidthCommand"
                                    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                                    Content="Fit to Width" />
                            <Button Command="DocumentViewer.FitToMaxPagesAcrossCommand"
                                    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                                    CommandParameter="1"
                                    Content="Whole Page" />
                            <Button Command="DocumentViewer.FitToMaxPagesAcrossCommand"
                                    CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                                    CommandParameter="2"
                                    Content="Two Pages" />
                        </ToolBar>

                        <custom:TouchScrollViewer x:Name="PART_ContentHost"
                                      Grid.Row="1">
                            <ScrollViewer.Background>
                                <LinearGradientBrush EndPoint="0.5,1"
                                                     StartPoint="0.5,0">
                                    <GradientStop Color="{DynamicResource ControlLightColor}"
                                                  Offset="0" />
                                    <GradientStop Color="{DynamicResource ControlMediumColor}"
                                                  Offset="1" />
                                </LinearGradientBrush>
                            </ScrollViewer.Background>
                        </custom:TouchScrollViewer>

                        <ContentControl Grid.Row="2" x:Name="PART_FindToolBarHost" Visibility="Collapsed"/>
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Это не работает, потому что движение пальца по зрителю просто выделяет текст. Для шаблона требуется ScrollViewer (или его производная) с именем "PART_ContentHost". Есть ли способ заблокировать ScrollViewer, чтобы растянуть его содержимое. Затем я мог бы обернуть свой собственный TouchScrollViewer вокруг всего DocumentViewer. Или есть способ сделать тест просмотра документов невидимым (например, IsHItTestVisible = false). Заранее спасибо.


person Jordan    schedule 03.02.2011    source источник
comment
Я написал здесь ответ, и я думаю, что он может быть полезен и для вас. stackoverflow.com/questions/46051049/   -  person Péter Hidvégi    schedule 06.09.2018
comment
Вау, это было так давно. Я даже не помню этого, но я уверен, что ваше решение сработает.   -  person Jordan    schedule 11.09.2018