,因爲我需要在我的WP7項目之一,顯示長文本串,我說Alex Yakhnin's ScrollableTextBlock控制它。編程滾動ScrollableTextBlock控制
它按預期工作,但我需要在某些用戶交互時自動滾動文本塊,但該控件不支持ScrollToVerticalOffset開箱即用,我不知道該如何去做。
我想刪除元素,並添加新的人會做,但我認爲這是做得有點過分了這樣一個簡單的任務。
,因爲我需要在我的WP7項目之一,顯示長文本串,我說Alex Yakhnin's ScrollableTextBlock控制它。編程滾動ScrollableTextBlock控制
它按預期工作,但我需要在某些用戶交互時自動滾動文本塊,但該控件不支持ScrollToVerticalOffset開箱即用,我不知道該如何去做。
我想刪除元素,並添加新的人會做,但我認爲這是做得有點過分了這樣一個簡單的任務。
一類醜陋的解決辦法是到負載事件添加到ScrollViewer中。當事件觸發時,獲取發件人(這是ScrollViewer,呵呵!)並將其存儲在類級變量中。通過這種方式,您可以使用其他方法訪問它,並且可以使用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);
}
我知道這可能不是最好的解決方案,但它的工作原理。希望這可以幫助!
當您已經獲得ScrollViewer
實例(使用FindName
或其他)時,則需要在scroll offset
上創建依賴項屬性以爲其設置動畫效果。 This可能會幫助你。
事實上,可能不是最好的方式,但仍然奏效。 – 2012-03-12 12:52:20