UWP Marquee Text Animation - PullRequest
       12

UWP Marquee Text Animation

0 голосов
/ 10 мая 2019

Есть ли UWP-версия текстовой анимации выделения?

И я хочу такой же эффект, как WPF Marquee Text Animation .

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

enter image description here

1 Ответ

0 голосов
/ 14 мая 2019

Вот версия UWP, которую я написал на основе ответа, который вы дали от здесь . Это просто демо, и вам нужно настроить его под себя.

Пожалуйста, сначала создайте пользовательский контроль, и вот код XAML в пользовательском контроле:

     <Grid PointerEntered="Grid_PointerEntered" Width="265" PointerExited="Grid_PointerExited" x:Name="mygrid">
        <Grid.Resources>
            <local:NegatingConverter x:Key="NegatingConverter"/>
            <Storyboard x:Name="Storyboard1">
                <DoubleAnimation
                            Storyboard.TargetName="transferCurreny"
                            Storyboard.TargetProperty="X"
                            Duration="0:0:6" From="0"
                            To="{Binding Width,ElementName=canvas,Converter={StaticResource NegatingConverter}}"
                            RepeatBehavior="Forever"/>
            </Storyboard>
        </Grid.Resources>
        <StackPanel x:Name="mystack" Height="500" Background="AliceBlue">
            <StackPanel Orientation="Horizontal" x:Name="stack" Height="100">
                    <StackPanel.RenderTransform>
                        <TranslateTransform x:Name="transferCurreny" X="0"/>
                    </StackPanel.RenderTransform>
                <Canvas x:Name="canvas" Width="{Binding ActualWidth, ElementName=stack}">
                    <TextBlock Text="TestTesting" FontSize="25"  x:Name="txtKron" Canvas.Left="0"/>
                    <TextBlock Text="{Binding Text, ElementName=txtKron}" FontSize="25" Canvas.Left="{Binding Width, ElementName=canvas}"/>
                </Canvas>
            </StackPanel>
        </StackPanel>

    </Grid>

Вот код:

     private void Grid_PointerEntered(object sender, PointerRoutedEventArgs e)
        {
            Storyboard1.Begin();
        }

        private void Grid_PointerExited(object sender, PointerRoutedEventArgs e)
        {
            Storyboard1.Stop();
        }

И преобразователь:

     public class NegatingConverter : IValueConverter
    {

        public object Convert(object value, Type targetType, object parameter, string language)
        {
            if (value is double)
            {
                return -((double)value);
            }
            return value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, string language)
        {
            if (value is double)
            {
                return +(double)value;
            }
            return value;
        }
    }

И есть серьезная проблема. Я столкнусь с проблемой конфликта, когда не установлю фон вышеупомянутой стековой панели mystack.

...