#c# #xamarin #xamarin.forms
Вопрос:
Я использую Xamarin.Формы, и я хочу создать подвижную метку в своем приложении в режиме реального времени (по таймеру). Я создаю эту логику:
Код XAML:
lt;ScrollView Grid.Row="0" VerticalOptions="End" Orientation="Horizontal" HorizontalScrollBarVisibility="Never" Margin="0, 0, 0, 40" x:Name="TickerTitleSound" IsEnabled="False" gt; lt;Label Text="{Binding SpecialText}" /gt; lt;/ScrollViewgt;
И код на C#, стоящий за:
// Direction - bool class member TickerTitleSound.Scrolled = (sender, e) =gt; { double scrollingSpace = TickerTitleSound.ContentSize.Width - TickerTitleSound.Width; if(TickerTitleSound.ScrollX gt;= scrollingSpace) { Direction = false; } else if(TickerTitleSound.ScrollX lt;= 0) { Direction = true; } }; Timer timerSound = new Timer() { Interval = 100 }; timerSound.Elapsed = async (o, e) =gt; { await Task.Run(() =gt; { Device.BeginInvokeOnMainThread(() =gt; { if (Direction) { TickerTitleSound.ScrollToAsync(TickerTitleSound.ScaleX 10, 0, false); } else { TickerTitleSound.ScrollToAsync(TickerTitleSound.ScaleX - 10, 0, false); } }); }); }; timerSound.Start();
Но этот код не работает. Я хочу получить этот результат:
Как это сделать? У меня есть
Комментарии:
1. почему вы используете
ScaleX
вместоScrollX
этого ?
Ответ №1:
Вы можете установить перевод метки, вот мой пример кода ниже:
public partial class TestPage1 : ContentPage { private bool Execute { get; set; } public TestPage () { InitializeComponent (); Label1.Text = "This is to simulate a really long sentence for testing purposes"; Label1.HorizontalOptions = LayoutOptions.Start; Label1.VerticalTextAlignment = TextAlignment.Center; Label1.LineBreakMode = LineBreakMode.NoWrap; } protected override void OnAppearing() { base.OnAppearing(); Execute = true; Device.StartTimer(TimeSpan.FromMilliseconds(50), () =gt; { Label1.TranslationX -= 5f; if (Math.Abs(Label1.TranslationX) gt; Width) { Label1.TranslationX = Label1.Width; } return Execute; }); } protected override void OnDisappearing() { base.OnDisappearing(); Execute = false; } }