Created
August 25, 2009 00:36
-
-
Save NickJosevski/174336 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Text; | |
using System.Windows; | |
using System.Windows.Controls; | |
using System.Windows.Data; | |
using System.Windows.Documents; | |
using System.Windows.Input; | |
using System.Windows.Media; | |
using System.Windows.Media.Imaging; | |
using System.Windows.Shapes; | |
using System.Windows.Interactivity; | |
using System.Windows.Threading; | |
namespace TypeOnScreens | |
{ | |
// | |
// If you want your Action to target elements other than its parent, extend your class | |
// from TargetedTriggerAction instead of from TriggerAction | |
// | |
public class TypeOnAction : TriggerAction<TextBlock> | |
{ | |
DispatcherTimer timer; | |
int len = 1; | |
public TypeOnAction() | |
{ | |
// Insert code required on object creation below this point. | |
timer = new DispatcherTimer(); | |
} | |
protected override void Invoke(object o) | |
{ | |
// Insert code that defines what the Action will do when triggered/invoked. | |
if (AssociatedObject == null) | |
return; | |
AssociatedObject.Text = ""; | |
timer.Interval = TimeSpan.FromSeconds(IntervalInSeconds); | |
timer.Tick += new EventHandler(timer_Tick); | |
len = 1; | |
timer.Start(); | |
} | |
void timer_Tick(object sender, EventArgs e) | |
{ | |
if (len > 0 && len <= TypeOnText.Length) | |
{ | |
AssociatedObject.Text = TypeOnText.Substring(0, len); | |
len++; | |
timer.Start(); | |
} | |
else | |
timer.Stop(); | |
} | |
public string TypeOnText | |
{ | |
get { return (string)GetValue(TypeOnTextProperty); } | |
set { SetValue(TypeOnTextProperty, value); } | |
} | |
// Using a DependencyProperty as the backing store for TypeOnText. This enables animation, styling, binding, etc… | |
public static readonly DependencyProperty TypeOnTextProperty = | |
DependencyProperty.Register("TypeOnText", typeof(string), typeof(TypeOnAction), new PropertyMetadata("")); | |
public double IntervalInSeconds | |
{ | |
get { return (double)GetValue(IntervalInSecondsProperty); } | |
set { SetValue(IntervalInSecondsProperty, value); } | |
} | |
// Using a DependencyProperty as the backing store for IntervalInSeconds. This enables animation, styling, binding, etc… | |
public static readonly DependencyProperty IntervalInSecondsProperty = | |
DependencyProperty.Register("IntervalInSeconds", typeof(double), typeof(TypeOnAction), new PropertyMetadata(0.35)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment