Click here to Skip to main content
Click here to Skip to main content
 

Silverlight Experimental Hacks (SLEX) - EventTrigger, PropertyTrigger, ReactiveTrigger, InvokeMethodAction, StoryBoardAction, etc. for Silverlight

By , 14 Jan 2010
 
Slex_Preview_2.zip
Source
.svn
all-wcprops
entries
format
prop-base
Slex.Lib.suo.svn-base
props
text-base
Slex.Lib.sln.svn-base
Slex.Lib.suo.svn-base
tmp
prop-base
props
text-base
Assemblies
.svn
all-wcprops
entries
format
prop-base
System.ComponentModel.Composition.dll.svn-base
System.ComponentModel.Composition.Initialization.dll.svn-base
System.Reactive.dll.svn-base
System.Windows.Interactivity.dll.svn-base
props
text-base
System.ComponentModel.Composition.dll.svn-base
System.ComponentModel.Composition.Initialization.dll.svn-base
System.Reactive.dll.svn-base
System.Windows.Interactivity.dll.svn-base
tmp
prop-base
props
text-base
Microsoft.Expression.Interactions.dll
System.ComponentModel.Composition.dll
System.ComponentModel.Composition.Initialization.dll
System.Reactive.dll
System.Windows.Interactivity.dll
Components
.svn
all-wcprops
entries
format
prop-base
props
text-base
Components.dgml.svn-base
tmp
prop-base
props
text-base
Components.dgml
Slex.Lib.Demo
.svn
all-wcprops
entries
format
prop-base
props
text-base
App.xaml.cs.svn-base
App.xaml.svn-base
MainPage.xaml.cs.svn-base
MainPage.xaml.svn-base
Slex.Lib.Demo.csproj.svn-base
Slex.Lib.Demo.csproj.user.svn-base
tmp
prop-base
props
text-base
Assets
.svn
all-wcprops
entries
format
prop-base
props
text-base
Styles.xaml.svn-base
tmp
prop-base
props
text-base
Bin
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
Debug
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
ar
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
System.Windows.Controls.resources.dll
de
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
System.Windows.Controls.Navigation.resources.dll
System.Windows.Controls.resources.dll
es
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
System.Windows.Controls.Navigation.resources.dll
System.Windows.Controls.resources.dll
fr
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
System.Windows.Controls.Navigation.resources.dll
System.Windows.Controls.resources.dll
it
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
System.Windows.Controls.Navigation.resources.dll
System.Windows.Controls.resources.dll
ja
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
System.Windows.Controls.Navigation.resources.dll
System.Windows.Controls.resources.dll
ko
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
System.Windows.Controls.Navigation.resources.dll
System.Windows.Controls.resources.dll
Slex.Lib.Demo.dll
Slex.Lib.Demo.xap
Slex.Lib.dll
System.ComponentModel.Composition.dll
System.Reactive.dll
System.Windows.Controls.dll
System.Windows.Controls.Navigation.dll
System.Windows.Interactivity.dll
zh-Hans
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
System.Windows.Controls.Navigation.resources.dll
System.Windows.Controls.resources.dll
zh-Hant
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
System.Windows.Controls.Navigation.resources.dll
System.Windows.Controls.resources.dll
Release
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
Commands
.svn
all-wcprops
entries
format
prop-base
props
text-base
DelegateCommand.cs.svn-base
tmp
prop-base
props
text-base
Extensions
Properties
.svn
all-wcprops
entries
format
prop-base
props
text-base
AppManifest.xml.svn-base
AssemblyInfo.cs.svn-base
tmp
prop-base
props
text-base
Slex.Lib.Demo.csproj.user
Views
.svn
all-wcprops
entries
format
prop-base
props
text-base
About.xaml.cs.svn-base
About.xaml.svn-base
ErrorWindow.xaml.cs.svn-base
ErrorWindow.xaml.svn-base
Home.xaml.cs.svn-base
Home.xaml.svn-base
tmp
prop-base
props
text-base
AdvancedDemos
Demos
.svn
all-wcprops
entries
format
prop-base
props
text-base
EventStoryBoardMethodAction.xaml.cs.svn-base
EventStoryBoardMethodAction.xaml.svn-base
EventTrigger.xaml.cs.svn-base
EventTrigger.xaml.svn-base
EventTriggerModel.cs.svn-base
InvokeMethod.xaml.cs.svn-base
InvokeMethod.xaml.svn-base
InvokeMethodModel.cs.svn-base
PropertyTrigger.xaml.cs.svn-base
PropertyTrigger.xaml.svn-base
PropertyTriggerModel.cs.svn-base
tmp
prop-base
props
text-base
Slex.Lib
.svn
all-wcprops
entries
format
prop-base
props
text-base
Slex.Lib.csproj.svn-base
Slex.Lib.csproj.user.svn-base
tmp
prop-base
props
text-base
Bin
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
Debug
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
Microsoft.Expression.Interactions.dll
Slex.Lib.dll
Slex.Lib.pdb
System.ComponentModel.Composition.dll
System.Reactive.dll
System.Windows.Interactivity.dll
Release
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
ClassDiagram.cd
Composition
Interactions
.svn
all-wcprops
entries
format
prop-base
props
text-base
ConverterHelper.cs.svn-base
DependencyPropertyHelper.cs.svn-base
EventBasedTrigger.cs.svn-base
EventTrigger.cs.svn-base
InvokeCommandAction.cs.svn-base
InvokeMethodAction.cs.svn-base
InvokingCondition.cs.svn-base
InvokingConditions.cs.svn-base
MethodParameters.cs.svn-base
MethodParameterValue.cs.svn-base
ObserverTrigger.cs.svn-base
PropertyListenerObject.cs.svn-base
PropertyTrigger.cs.svn-base
SlexTrigger.cs.svn-base
SlexTriggerAction.cs.svn-base
TargettedTriggerAction.cs.svn-base
ValueDetails.cs.svn-base
VisualTreeUtils.cs.svn-base
tmp
prop-base
props
text-base
obj
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
Debug
.svn
all-wcprops
entries
format
prop-base
props
text-base
Slex.Lib.csproj.FileListAbsolute.txt.svn-base
tmp
prop-base
props
text-base
ResolveAssemblyReference.cache
Slex.Lib.dll
Slex.Lib.pdb
TempPE
.svn
all-wcprops
entries
format
prop-base
props
text-base
tmp
prop-base
props
text-base
Properties
.svn
all-wcprops
entries
format
prop-base
props
text-base
AssemblyInfo.cs.svn-base
tmp
prop-base
props
text-base
Reactive
.svn
all-wcprops
entries
format
prop-base
props
text-base
InnerClasses.cs.svn-base
ObservableExtensions.cs.svn-base
tmp
prop-base
props
text-base
Slex.Lib.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 Slex.Lib.Interactions
{
    /// <summary>
    /// A trigger action that targets an element
    /// </summary>
    public abstract class TargettedTriggerAction : SlexTriggerAction
    {
        /// <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 use 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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author


Permalink | Advertise | Privacy | Mobile
Web03 | 2.6.130617.1 | Last Updated 15 Jan 2010
Article Copyright 2010 by Anoop Madhusudanan
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid