C# 以编程方式滚动ScrollableTextBlock控件
因为我需要在我的一个WP7项目中显示长文本字符串,所以我向其中添加了控件 它按预期工作,但我需要在某些用户交互上自动滚动文本块,但该控件不支持ScrollToVerticalOffset开箱即用,我不知道如何进行C# 以编程方式滚动ScrollableTextBlock控件,c#,windows-phone-7,C#,Windows Phone 7,因为我需要在我的一个WP7项目中显示长文本字符串,所以我向其中添加了控件 它按预期工作,但我需要在某些用户交互上自动滚动文本块,但该控件不支持ScrollToVerticalOffset开箱即用,我不知道如何进行 我想删除元素并添加新元素就可以了,但我认为对于这样一个简单的任务来说,这样做太过分了。一种难看的解决方法是向ScrollViewer添加加载事件。当事件触发时,获取发送方(这是ScrollViewer,duh!),并将其存储在类级变量中。这样,您就可以通过其他方法访问它,并且可以使用S
我想删除元素并添加新元素就可以了,但我认为对于这样一个简单的任务来说,这样做太过分了。一种难看的解决方法是向ScrollViewer添加加载事件。当事件触发时,获取发送方(这是ScrollViewer,duh!),并将其存储在类级变量中。这样,您就可以通过其他方法访问它,并且可以使用ScrollToVerticalOffset方法 XAML
我知道这可能不是最好的解决方案,但它确实有效。希望这有帮助 当您已经获得了
ScrollViewer
实例(使用FindName
或其他工具)时,您需要在scroll offset
上创建一个依赖项属性来设置动画。我可以帮你
<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>
private ScrollViewer _scroller;
private void ScrollViewer_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
_scroller = sender as ScrollViewer;
}
private void SomeMethod()
{
_scroller.ScrollToVerticalOffset(200d);
}