- wex.zip
- Assemblies
- Microsoft.Expression.Interactions.dll
- System.ComponentModel.Composition.dll
- System.CoreEx.dll
- System.Interactive.dll
- System.Reactive.dll
- System.Windows.Interactivity.dll
- WexEventTrigger.Demo
- WexEventTrigger.sln
- WexEventTrigger
- bin
- Debug
- ClassDiagram1.cd
- Composition
- Lib
- Properties
- Reactive
- Wex.csproj
- Wex.csproj.user
|
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Data;
namespace Wex.Lib.Interactions
{
/// <summary>
/// A trigger to fire when a property changes
/// </summary>
public class PropertyTrigger
: EventBasedTrigger
{
#region Public Properties
/// <summary>
/// Name of the property to listen
/// </summary>
public string Property
{
get { return (string)GetValue(PropertyProperty); }
set { SetValue(PropertyProperty, value); }
}
// Using a DependencyProperty as the backing store for Property. This enables animation, styling, binding, etc...
public static readonly DependencyProperty PropertyProperty =
DependencyProperty.Register("Property", typeof(string), typeof(PropertyTrigger), new PropertyMetadata(null,OnParameterChanged));
#endregion
/// <summary>
/// Callback to re-initialize our trigger bindings
/// </summary>
/// <param name="d"></param>
/// <param name="e"></param>
public static void OnParameterChanged
(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
//Future plans
}
/// <summary>
/// Callback invoked when the property changes
/// </summary>
/// <param name="dependencyObject"></param>
/// <param name="eventArgs"></param>
private void OnListenAttachedPropertyChanged(System.Windows.DependencyObject dependencyObject,
System.Windows.DependencyPropertyChangedEventArgs eventArgs)
{
if (initialized)
{
var e=new EventResult() { Sender = dependencyObject, Args = eventArgs };
this.InvokeConditional(e);
}
}
/// <summary>
/// Does the initialization
/// </summary>
protected override void Initialize()
{
if (Source == null)
throw new InvalidOperationException("Source specified for this trigger is null");
if (string.IsNullOrEmpty(Property))
throw new InvalidOperationException("PropertyPath specified for this trigger is null or empty");
DependencyPropertyHelper.RegisterForNotification<PropertyTrigger>(this,Source,
Property, OnListenAttachedPropertyChanged);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Architect, Developer, Speaker | Wannabe GUT inventor & Data Scientist | Microsoft MVP in C#