- 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;
namespace Wex.Lib.Interactions
{
/// <summary>
/// A trigger action that targets an element
/// </summary>
public abstract class TargettedTriggerAction : WexTriggerAction
{
/// <summary>
/// The type of the target
/// </summary>
public ContextTypeEnum TargetType
{
get { return (ContextTypeEnum)GetValue(TargetTypeProperty); }
set { SetValue(TargetTypeProperty, value); }
}
// Using a DependencyProperty as the backing store for SourceType. This enables animation, styling, binding, etc...
public static readonly DependencyProperty TargetTypeProperty =
DependencyProperty.Register("TargetType", typeof(ContextTypeEnum), typeof(TargettedTriggerAction), new PropertyMetadata(ContextTypeEnum.Model));
/// <summary>
/// Name of the element to target
/// </summary>
public string TargetName
{
get { return (string)GetValue(TargetNameProperty); }
set { SetValue(TargetNameProperty, value); }
}
// Using a DependencyProperty as the backing store for TargetName. This enables animation, styling, binding, etc...
public static readonly DependencyProperty TargetNameProperty =
DependencyProperty.Register("TargetName", typeof(string), typeof(TargettedTriggerAction), new PropertyMetadata("This"));
/// <summary>
/// Actual target of this trigger
/// </summary>
protected object Target
{
get { return (object)GetValue(TargetProperty); }
set { SetValue(TargetProperty, value); }
}
// Using a DependencyProperty as the backing store for Source. This enables animation, styling, binding, etc...
public static readonly DependencyProperty TargetProperty =
DependencyProperty.Register("Target", typeof(object), typeof(TargettedTriggerAction), new PropertyMetadata(null));
/// <summary>
/// Internally initialize the element
/// </summary>
internal override void InternalInitialize()
{
base.InternalInitialize();
if (AssociatedObject != null && Target == null)
{
if (TargetType == ContextTypeEnum.Element)
{
if (TargetName == "This" || string.IsNullOrEmpty(TargetName))
{
Target = AssociatedObject;
}
else
Target = (AssociatedObject as FrameworkElement).FindName(TargetName);
}
else if (TargetType == ContextTypeEnum.Model)
{
Target = (AssociatedObject as FrameworkElement).DataContext;
}
}
}
}
}
|
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#