触摸滚动DocumentViewer

时间:2011-02-03 15:48:18

标签: wpf touch scrollviewer 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)。提前致谢。

0 个答案:

没有答案