private void UserControl_Loaded(object sender, RoutedEventArgs e) { var labelWidth = Control_Label.ActualWidth; if (labelWidth <= ActualWidth) { var space = ActualWidth - labelWidth; Dispatcher.Invoke(() => { Control_Label.SetValue(Canvas.LeftProperty, space / 2d); }); } }
private void Worker_DoWork(object sender, DoWorkEventArgs e) { while (!_worker.CancellationPending) { if ((DateTime.Now - _beginAutoScroll).TotalMilliseconds < 1000) { Thread.Sleep(10); continue; } Dispatcher.Invoke(() => { if ((DateTime.Now - _reachedDefaultPosition).TotalMilliseconds < 2000) { return; } var labelWidth = Control_Label.ActualWidth; double left = (double)Control_Label.GetValue(Canvas.LeftProperty); if (left < -labelWidth) { left = ActualWidth + 0.5; } Control_Label.SetValue(Canvas.LeftProperty, left - 0.5); if (left - 0.5 == 0.0) { _reachedDefaultPosition = DateTime.Now; } }); Thread.Sleep(10); } Dispatcher.Invoke(() => { Control_Label.SetValue(Canvas.LeftProperty, 0d); }); }