From ec7cb9c6facd4a66e7ae1601cf51f0b341b0392b Mon Sep 17 00:00:00 2001 From: Scott Lovegrove Date: Sat, 29 Aug 2015 17:27:17 +0100 Subject: [PATCH] Updated to use ITriggerValue --- .../HostedStateTrigger.cs | 42 ++++++++++++++++--- src/WindowsStateTriggers/ITriggerValue.cs | 4 -- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/WindowsStateTriggers/HostedStateTrigger.cs b/src/WindowsStateTriggers/HostedStateTrigger.cs index 41b5cde..3168414 100644 --- a/src/WindowsStateTriggers/HostedStateTrigger.cs +++ b/src/WindowsStateTriggers/HostedStateTrigger.cs @@ -1,4 +1,5 @@ -using Windows.ApplicationModel.Core; +using System; +using Windows.ApplicationModel.Core; using Windows.UI.Xaml; namespace WindowsStateTriggers @@ -6,20 +7,20 @@ namespace WindowsStateTriggers /// /// A state trigger for determining if the app is in a hosted state (for example, if share is being used) /// - public class HostedStateTrigger : StateTriggerBase + public class HostedStateTrigger : StateTriggerBase, ITriggerValue { /// /// Identifies the dependency property. /// public static readonly DependencyProperty IsHostedProperty = DependencyProperty.Register( - "IsHosted", typeof (HostedState), typeof (HostedStateTrigger), new PropertyMetadata(HostedState.Unknown, OnIsHostedRequiredChanged)); + "IsHosted", typeof(HostedState), typeof(HostedStateTrigger), new PropertyMetadata(HostedState.Unknown, OnIsHostedRequiredChanged)); /// /// Gets or sets the is hosted value. /// public HostedState IsHosted { - get { return (HostedState) GetValue(IsHostedProperty); } + get { return (HostedState)GetValue(IsHostedProperty); } set { SetValue(IsHostedProperty, value); } } @@ -41,11 +42,11 @@ private void UpdateStateTrigger() var isHosted = CoreApplication.GetCurrentView().IsHosted; if (isHosted) { - SetActive(IsHosted == HostedState.Hosted); + IsActive = IsHosted == HostedState.Hosted; } else { - SetActive(IsHosted == HostedState.NotHosted); + IsActive = IsHosted == HostedState.NotHosted; } } @@ -69,5 +70,34 @@ public enum HostedState /// NotHosted } + + #region ITriggerValue + + private bool m_IsActive; + + /// + /// Gets a value indicating whether this trigger is active. + /// + /// true if this trigger is active; otherwise, false. + public bool IsActive + { + get { return m_IsActive; } + private set + { + if (m_IsActive != value) + { + m_IsActive = value; + base.SetActive(value); + IsActiveChanged?.Invoke(this, EventArgs.Empty); + } + } + } + + /// + /// Occurs when the property has changed. + /// + public event EventHandler IsActiveChanged; + + #endregion ITriggerValue } } diff --git a/src/WindowsStateTriggers/ITriggerValue.cs b/src/WindowsStateTriggers/ITriggerValue.cs index c3e48a6..900f8f8 100644 --- a/src/WindowsStateTriggers/ITriggerValue.cs +++ b/src/WindowsStateTriggers/ITriggerValue.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace WindowsStateTriggers {