Перемещение текстового блока с помощью StoryBoard - UWP c # - PullRequest
0 голосов
/ 31 августа 2018

Я хочу переместить текстовый блок слева на конец экрана. Я сделал, как показано ниже. Он скользит справа налево. Но для длинных текстов это не показывает все тексты. Как я могу решить эту проблему?

           <Grid>
                <Canvas Grid.Row="0" Background="Blue">
                <Canvas.Clip>
                    <RectangleGeometry Rect="0, 0, 2000, 800" />
                </Canvas.Clip>
            <TextBlock Name="txtScrollingNotification" Foreground="White" 
                   Text="aaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggg hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkklllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooooooooooooooooooooooooooooooooooooopppppppppppppppppppppppppp" Canvas.Top="6" />
            </Canvas>
      <Grid.Resources>
                <Storyboard x:Name="Storyboard1">
                    <DoubleAnimation
                Storyboard.TargetName="txtScrollingNotification"
                Storyboard.TargetProperty="(Canvas.Left)"
                Duration="0:0:10" From="2000"
                To="0"  
                RepeatBehavior="Forever"  />
                </Storyboard>
            </Grid.Resources>
        </Grid>

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Решил проблему, установив значение DoubleAnimation From и To программным способом

 private void LoadScrollingTextBlock()
    {
        Storyboard sb = new Storyboard();
        DoubleAnimation doubleAnimation = new DoubleAnimation();
        doubleAnimation.From = this.ActualWidth;
        doubleAnimation.To = -txtScrollingNotification.ActualWidth;
        doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
        doubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(55)); // provide an appropriate  duration 
                                                                           //marquee.(Canvas.LeftProperty, doubleAnimation);
        Storyboard.SetTarget(doubleAnimation, txtScrollingNotification);
        Windows.UI.Xaml.Media.Animation.Storyboard.SetTargetProperty(doubleAnimation, "(Canvas.Left)");
        sb.Children.Add(doubleAnimation);
        sb.Begin();
    }
0 голосов
/ 01 сентября 2018

Можете ли вы увидеть весь текст перед анимацией? Возможно, ваш элемент недостаточно широк для отображения всего текста.

Если вы добавите перенос текста в текстовое поле, текст будет переноситься в конце элемента, чтобы вы могли видеть эти размеры

<TextBlock 
   Name="txtScrollingNotification" 
   Foreground="White" 
   Width="2000"
   TextWrapping="Wrap"
   Text="long text" 
   Canvas.Top="6" />
...