网格列wpf中的平滑滚动文本

时间:2013-12-03 13:57:07

标签: wpf vb.net xaml

我有一个有3列的网格。我想滚动一个长文本,我在第二列中使用滚动条更新。我试过了文本块,但如果我的文字不适合,它会把我的字符串剪掉。你能推荐我做些什么。

我的代码现在看起来像这样:

以下是三栏。

<Grid.ColumnDefinitions>
                        <ColumnDefinition Width="120"></ColumnDefinition>
                        <ColumnDefinition Width="2*"></ColumnDefinition>
                        <ColumnDefinition Width="*"></ColumnDefinition>
                    </Grid.ColumnDefinitions>

我更新的文本块

                    <TextBlock Name="SongTitle" Text="Now onair:" FontSize="20" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="1" TextWrapping="NoWrap">
                    <TextBlock.RenderTransform>
                        <TranslateTransform x:Name="translate" />
                    </TextBlock.RenderTransform>
                    <TextBlock.Triggers>
                        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
                            <BeginStoryboard>
                                <Storyboard RepeatBehavior="Forever">

这是一个问题,它开始不是从列边缘滚动...

<DoubleAnimation 
                            From="300" To="0" 
                            Storyboard.TargetName="translate" 
                            Storyboard.TargetProperty="X"
                            Duration="0:0:8" />
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </TextBlock.Triggers>
                    </TextBlock>

1 个答案:

答案 0 :(得分:0)

首先,您应该使用Grid,而不是使用ScrollViewer。要隐藏滚动条,请将HorizontalScrollBarVisibilityVerticalScrollBarVisibility设置为Hidden。然后,您可以通过代码隐藏来处理鼠标滚轮事件,以防止用户手动滚动文本。

当然,也可以使用Grid,但它会给你带来一些麻烦。

要回答原始问题,您应该使用LayoutTransform代替RenderTransform