Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式滚动ScrollableTextBlock控件_C#_Windows Phone 7 - Fatal编程技术网

C# 以编程方式滚动ScrollableTextBlock控件

C# 以编程方式滚动ScrollableTextBlock控件,c#,windows-phone-7,C#,Windows Phone 7,因为我需要在我的一个WP7项目中显示长文本字符串,所以我向其中添加了控件 它按预期工作,但我需要在某些用户交互上自动滚动文本块,但该控件不支持ScrollToVerticalOffset开箱即用,我不知道如何进行 我想删除元素并添加新元素就可以了,但我认为对于这样一个简单的任务来说,这样做太过分了。一种难看的解决方法是向ScrollViewer添加加载事件。当事件触发时,获取发送方(这是ScrollViewer,duh!),并将其存储在类级变量中。这样,您就可以通过其他方法访问它,并且可以使用S

因为我需要在我的一个WP7项目中显示长文本字符串,所以我向其中添加了控件

它按预期工作,但我需要在某些用户交互上自动滚动文本块,但该控件不支持ScrollToVerticalOffset开箱即用,我不知道如何进行


我想删除元素并添加新元素就可以了,但我认为对于这样一个简单的任务来说,这样做太过分了。

一种难看的解决方法是向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);
}