| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | 
							- #if XFORMS
 
- namespace Caliburn.Micro.Core.Xamarin.Forms
 
- #else
 
- namespace Caliburn.Micro
 
- #endif 
 
- {
 
-     using System;
 
-     using System.Collections.Generic;
 
-     using System.Linq;
 
- #if WinRT81
 
-     using Windows.UI.Xaml;
 
-     using Microsoft.Xaml.Interactivity;
 
-     using TriggerBase = Microsoft.Xaml.Interactivity.IBehavior;
 
- #elif XFORMS
 
-     using global::Xamarin.Forms;
 
-     using UIElement = global::Xamarin.Forms.Element;
 
-     using FrameworkElement = global::Xamarin.Forms.VisualElement;
 
-     using DependencyProperty = global::Xamarin.Forms.BindableProperty;
 
-     using DependencyObject = global::Xamarin.Forms.BindableObject;
 
- #else
 
-     using System.Windows;
 
-     using System.Windows.Interactivity;
 
-     using TriggerBase = System.Windows.Interactivity.TriggerBase;
 
-     using Caliburn.Micro.Core;
 
- #endif
 
-     /// <summary>
 
-     ///   Host's attached properties related to routed UI messaging.
 
-     /// </summary>
 
-     public static class Message {
 
-         internal static readonly DependencyProperty HandlerProperty =
 
-             DependencyPropertyHelper.RegisterAttached(
 
-                 "Handler",
 
-                 typeof(object),
 
-                 typeof(Message),
 
-                 null
 
-                 );
 
-         static readonly DependencyProperty MessageTriggersProperty =
 
-             DependencyPropertyHelper.RegisterAttached(
 
-                 "MessageTriggers",
 
-                 typeof(TriggerBase[]),
 
-                 typeof(Message),
 
-                 null
 
-                 );
 
-         /// <summary>
 
-         ///   Places a message handler on this element.
 
-         /// </summary>
 
-         /// <param name="d"> The element. </param>
 
-         /// <param name="value"> The message handler. </param>
 
-         public static void SetHandler(DependencyObject d, object value) {
 
-             d.SetValue(HandlerProperty, value);
 
-         }
 
-         /// <summary>
 
-         ///   Gets the message handler for this element.
 
-         /// </summary>
 
-         /// <param name="d"> The element. </param>
 
-         /// <returns> The message handler. </returns>
 
-         public static object GetHandler(DependencyObject d) {
 
-             return d.GetValue(HandlerProperty);
 
-         }
 
-         /// <summary>
 
-         ///   A property definition representing attached triggers and messages.
 
-         /// </summary>
 
-         public static readonly DependencyProperty AttachProperty =
 
-             DependencyPropertyHelper.RegisterAttached(
 
-                 "Attach",
 
-                 typeof(string),
 
-                 typeof(Message),
 
-                 null, 
 
-                 OnAttachChanged
 
-                 );
 
-         /// <summary>
 
-         ///   Sets the attached triggers and messages.
 
-         /// </summary>
 
-         /// <param name="d"> The element to attach to. </param>
 
-         /// <param name="attachText"> The parsable attachment text. </param>
 
-         public static void SetAttach(DependencyObject d, string attachText) {
 
-             d.SetValue(AttachProperty, attachText);
 
-         }
 
-         /// <summary>
 
-         ///   Gets the attached triggers and messages.
 
-         /// </summary>
 
-         /// <param name="d"> The element that was attached to. </param>
 
-         /// <returns> The parsable attachment text. </returns>
 
-         public static string GetAttach(DependencyObject d) {
 
-             return d.GetValue(AttachProperty) as string;
 
-         }
 
-         static void OnAttachChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
 
-             if (e.NewValue == e.OldValue) {
 
-                 return;
 
-             }
 
-             var messageTriggers = (TriggerBase[])d.GetValue(MessageTriggersProperty);
 
- #if WinRT81
 
-             var allTriggers = Interaction.GetBehaviors(d);
 
-             if (messageTriggers != null)
 
-             {
 
-                 messageTriggers.OfType<DependencyObject>().Apply(x => allTriggers.Remove(x));
 
-             }
 
-             var newTriggers = Parser.Parse(d, e.NewValue as string).ToArray();
 
-             newTriggers.OfType<DependencyObject>().Apply(allTriggers.Add);
 
- #elif XFORMS
 
-             var visualElement = d as VisualElement;
 
-             var allTriggers = visualElement != null ? visualElement.Triggers : new List<TriggerBase>();
 
-             if (messageTriggers != null) {
 
-                 messageTriggers.Apply(x => allTriggers.Remove(x));
 
-             }
 
-             var newTriggers = Parser.Parse(d, e.NewValue as string).ToArray();
 
-             newTriggers.Apply(allTriggers.Add);
 
- #else
 
-             var allTriggers = Interaction.GetTriggers(d);
 
-              if (messageTriggers != null) {
 
-                 messageTriggers.Apply(x => allTriggers.Remove(x));
 
-             }
 
-             var newTriggers = Parser.Parse(d, e.NewValue as string).ToArray();
 
-             newTriggers.Apply(allTriggers.Add);
 
- #endif
 
-             if (newTriggers.Length > 0) {
 
-                 d.SetValue(MessageTriggersProperty, newTriggers);
 
-             }
 
-             else {
 
-                 d.ClearValue(MessageTriggersProperty);
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |