| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | 
							- namespace Caliburn.Micro {
 
-     using System;
 
-     using System.ComponentModel;
 
-     using System.Windows;
 
-     using System.Windows.Interactivity;
 
-     /// <summary>
 
-     /// Represents a parameter of an <see cref="ActionMessage"/>.
 
-     /// </summary>
 
-     public class Parameter : Freezable, IAttachedObject {
 
-         /// <summary>
 
-         /// A dependency property representing the parameter's value.
 
-         /// </summary>
 
-         public static readonly DependencyProperty ValueProperty =
 
-             DependencyProperty.Register(
 
-                 "Value",
 
-                 typeof(object),
 
-                 typeof(Parameter),
 
-                 new PropertyMetadata(OnValueChanged)
 
-                 );
 
-         DependencyObject associatedObject;
 
-         WeakReference owner;
 
-         /// <summary>
 
-         /// Gets or sets the value of the parameter.
 
-         /// </summary>
 
-         /// <value>The value.</value>
 
-         [Category("Common Properties")]
 
-         public object Value {
 
-             get { return GetValue(ValueProperty); }
 
-             set { SetValue(ValueProperty, value); }
 
-         }
 
-         DependencyObject IAttachedObject.AssociatedObject {
 
-             get
 
-             {
 
-                 ReadPreamble();
 
-                 return associatedObject;
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// Gets or sets the owner.
 
-         /// </summary>
 
-         protected ActionMessage Owner {
 
-             get { return owner == null ? null : owner.Target as ActionMessage; }
 
-             set { owner = new WeakReference(value); }
 
-         }
 
-         void IAttachedObject.Attach(DependencyObject dependencyObject) {
 
-             WritePreamble();
 
-             associatedObject = dependencyObject;
 
-             WritePostscript();
 
-         }
 
-         void IAttachedObject.Detach() {
 
-             WritePreamble();
 
-             associatedObject = null;
 
-             WritePostscript();
 
-         }
 
-         /// <summary>
 
-         /// When implemented in a derived class, creates a new instance of the <see cref="T:System.Windows.Freezable"/> derived class.
 
-         /// </summary>
 
-         /// <returns>The new instance.</returns>
 
-         protected override Freezable CreateInstanceCore() {
 
-             return new Parameter();
 
-         }
 
-         /// <summary>
 
-         /// Makes the parameter aware of the <see cref="ActionMessage"/> that it's attached to.
 
-         /// </summary>
 
-         /// <param name="owner">The action message.</param>
 
-         internal void MakeAwareOf(ActionMessage owner) {
 
-             Owner = owner;
 
-         }
 
-         static void OnValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
 
-             var parameter = (Parameter)d;
 
-             var owner = parameter.Owner;
 
-             if (owner != null) {
 
-                 owner.UpdateAvailability();
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |