| Gustavo's profilementasBlogListsSkyDrive | Help |
|
November 15 TickerYou can use this panel as ItemsPanelTemplate on ItemsControl, ListBox, ...
Note: For a better control over delta FPS use a Storyboard instead DispatcherTimer.
public class Ticker : Canvas { public static readonly DependencyProperty DelayProperty; public static readonly DependencyProperty DeltaProperty;
private double pos = 0;
static Ticker() { DelayProperty = DependencyProperty.Register("Delay", typeof(TimeSpan), typeof(Ticker), new PropertyMetadata(TimeSpan.Zero)); DeltaProperty = DependencyProperty.Register("Delta", typeof(double), typeof(Ticker), new PropertyMetadata(2.0)); }
public Ticker() : base() { ClipToBounds = true;
Loaded += new RoutedEventHandler(Ticker_Loaded); }
public void Ticker_Loaded(object sender, RoutedEventArgs e) { foreach (FrameworkElement fe in Children) { pos = ActualWidth; Canvas.SetLeft(fe, ActualWidth); }
DispatcherTimer delay_timer = new DispatcherTimer() { Interval = Delay }; delay_timer.Tick += delegate { DispatcherTimer delta_timer = new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(10) }; delta_timer.Tick += delegate { foreach (FrameworkElement fe in Children) { pos -= Delta; if (pos + fe.ActualWidth < 0) pos = ActualWidth;
Canvas.SetLeft(fe, pos); } }; delta_timer.Start();
delay_timer.Stop(); }; delay_timer.Start(); }
[Category("Ticker")] public TimeSpan Delay { get { return (TimeSpan)GetValue(DelayProperty); } set { SetValue(DelayProperty, value); } } [Category("Ticker")] public double Delta { get { return (double)GetValue(DeltaProperty); } set { SetValue(DeltaProperty, value); } } } TrackbacksThe trackback URL for this entry is: http://mentas.spaces.live.com/blog/cns!A8D899E9B03A6E15!792.trak Weblogs that reference this entry
|
|
|