2012-03-09 11 views
0

WP7プロジェクトで長いテキスト文字列を表示する必要があるため、コントロールにAlex Yakhnin's ScrollableTextBlockコントロールを追加しました。プログラムでスクロールScrollableTextBlockコントロール

期待どおりに動作していますが、特定のユーザー操作で自動的にテキストブロックをスクロールする必要がありますが、コントロールはScrollToVerticalOffsetをサポートしていないため、どのように動くかわかりません。

私は要素を削除して新しいものを追加すると思いますが、このような単純な作業には多すぎると思います。

答えて

1

一種の厄介な回避策は、LoadイベントをScrollViewerに追加することです。イベントが発生すると、送信者(ScrollViewer、duh!)をフェッチし、クラスレベルの変数に格納します。この方法で他のメソッドでアクセスすることができ、ScrollToVerticalOffsetメソッドを使用することができます。

XAML

<PhoneApp1:ScrollableTextBlock x:Name="TextBlockOne" Margin="0,0,-12,0"> 
    <PhoneApp1:ScrollableTextBlock.Style> 
     <Style TargetType="PhoneApp1:ScrollableTextBlock" > 
      <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/> 
      <Setter Property="Background" Value="Transparent"/> 
      <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/> 
      <Setter Property="Padding" Value="0"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="PhoneApp1:ScrollableTextBlock"> 
         <ScrollViewer Foreground="{TemplateBinding Foreground}" 
             Background="{TemplateBinding Background}" 
             BorderBrush="{TemplateBinding BorderBrush}" 
             BorderThickness="{TemplateBinding BorderThickness}" 
             Padding="{TemplateBinding Padding}" 
             Loaded="ScrollViewer_Loaded"> 
          <StackPanel Orientation="Vertical" x:Name="StackPanel" /> 
         </ScrollViewer> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </PhoneApp1:ScrollableTextBlock.Style> 
</PhoneApp1:ScrollableTextBlock> 

C#

private ScrollViewer _scroller; 

private void ScrollViewer_Loaded(object sender, System.Windows.RoutedEventArgs e) 
{ 
    _scroller = sender as ScrollViewer; 
} 

private void SomeMethod() 
{ 
    _scroller.ScrollToVerticalOffset(200d); 
} 

私はそれはおそらく最も素晴らしい解決策ではないと知っているが、それは動作します。お役に立てれば!

+1

実際、おそらく最も良い方法ではありませんが、それにもかかわらず働いていました。 –

0

ScrollViewerインスタンス(FindNameなど)を既に取得している場合は、scroll offsetに依存プロパティを作成してアニメーション化する必要があります。 Thisがお手伝いします。

関連する問題