Zoom使用RichTextColumns捕捉到ScrollViewer上的顶部屏幕

时间:2013-06-20 15:45:34

标签: c# xaml windows-runtime windows-store-apps winrt-xaml

我在Windows应用商店应用中遇到ScrollViewer组件的奇怪问题。它位于RichTextColumns内,可以在列中显示可以水平滚动的文本。

我启用了属性ZoomMode="Enabled"进行缩放,但是当我在缩放时松开手指(停止动作)时,滚动会顺畅地移动到顶部(因此,如果我想缩放列的底部)文本,应用程序自动移动到顶部,我看不到所需的文本。)

首先,我认为这是捕捉点的问题,但在VerticalSnapPointsType="None"属性中设置ZoomSnapPointsType="None"ScrollViewer并不能解决问题。

这是代码(你可以使用名为“网格应用程序”的默认模板[Aplicacióndecuadrícula用西班牙语]在Visual Studio中创建一个新项目):

<ScrollViewer x:Name="scrollViewer" Style="{StaticResource HorizontalScrollViewerStyle}" Grid.Row="1" ZoomMode="Enabled" VerticalScrollMode="Enabled" VerticalSnapPointsType="None" ZoomSnapPointsType="None" VerticalSnapPointsAlignment="Far" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
      <common:RichTextColumns x:Name="richTextColumns" Margin="117,0,117,47">
          <RichTextBlock x:Name="richTextBlock" Width="560" Style="{StaticResource ItemRichTextStyle}" IsTextSelectionEnabled="False">
                <Paragraph>
                     <Run FontSize="26.667" FontWeight="Light" Text="{Binding Title}"/>
                     <LineBreak/>
                     <LineBreak/>
                     <Run FontWeight="Normal" Text="{Binding Subtitle}"/>
                </Paragraph>
                <Paragraph LineStackingStrategy="MaxHeight">
                     <InlineUIContainer>
                          <Image x:Name="image" MaxHeight="480" Margin="0,20,0,10" Stretch="Uniform" Source="{Binding Image}" AutomationProperties.Name="{Binding Title}"/>
                     </InlineUIContainer>
                </Paragraph>
                <Paragraph>
                     <Run FontWeight="SemiLight" Text="{Binding Content}"/>
                </Paragraph>
          </RichTextBlock>

          <common:RichTextColumns.ColumnTemplate>
               <DataTemplate>
                      <RichTextBlockOverflow Width="560" Margin="80,0,0,0">
                            <RichTextBlockOverflow.RenderTransform>
                                  <TranslateTransform X="-1" Y="4"/>
                            </RichTextBlockOverflow.RenderTransform>
                      </RichTextBlockOverflow>
               </DataTemplate>
          </common:RichTextColumns.ColumnTemplate>
    </common:RichTextColumns>

    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="ApplicationViewStates">
            <VisualState x:Name="FullScreenLandscape"/>
            <VisualState x:Name="Filled"/>

            <VisualState x:Name="FullScreenPortrait">
                 <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="richTextColumns" Storyboard.TargetProperty="Margin">
                           <DiscreteObjectKeyFrame KeyTime="0" Value="97,0,87,57"/>
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="image" Storyboard.TargetProperty="MaxHeight">
                          <DiscreteObjectKeyFrame KeyTime="0" Value="400"/>
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </VisualState>
            <VisualState x:Name="Snapped">
                <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="richTextColumns" Storyboard.TargetProperty="Margin">
                        <DiscreteObjectKeyFrame KeyTime="0" Value="17,0,17,57"/>
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="scrollViewer" Storyboard.TargetProperty="Style">
                          <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VerticalScrollViewerStyle}"/>
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="richTextBlock" Storyboard.TargetProperty="Width">
                         <DiscreteObjectKeyFrame KeyTime="0" Value="280"/>
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="image" Storyboard.TargetProperty="MaxHeight">
                         <DiscreteObjectKeyFrame KeyTime="0" Value="160"/>
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
</ScrollViewer>

但是,当我将属性VerticalScrollBarVisibility设置为EnabledAutoHidden等)时,缩放按预期工作,但文本显示在一个列(垂直溢出)。文本必须以多列显示。

我错过了什么?如何使其适用于列?

提前谢谢。

0 个答案:

没有答案