From 7b6794b711d8fac15780835eaa1e55b6d80e906a Mon Sep 17 00:00:00 2001 From: Darren Batchelor Date: Tue, 7 Dec 2021 15:20:25 -0800 Subject: [PATCH 1/7] Init commit --- .../Triggers/IsNullOrEmptyStateTrigger.cs | 4 +- .../Test_IsNullOrEmptyStateTrigger.cs | 41 +++++++++++++++++++ UnitTests/UnitTests.UWP/UnitTests.UWP.csproj | 1 + 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 UnitTests/UnitTests.UWP/UI/Triggers/Test_IsNullOrEmptyStateTrigger.cs diff --git a/Microsoft.Toolkit.Uwp.UI/Triggers/IsNullOrEmptyStateTrigger.cs b/Microsoft.Toolkit.Uwp.UI/Triggers/IsNullOrEmptyStateTrigger.cs index 7eec265e229..f5692a72879 100644 --- a/Microsoft.Toolkit.Uwp.UI/Triggers/IsNullOrEmptyStateTrigger.cs +++ b/Microsoft.Toolkit.Uwp.UI/Triggers/IsNullOrEmptyStateTrigger.cs @@ -30,12 +30,14 @@ public object Value public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(nameof(Value), typeof(object), typeof(IsNullOrEmptyStateTrigger), new PropertyMetadata(true, OnValuePropertyChanged)); + public static bool IsActive { get; private set; } + private static void OnValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var obj = (IsNullOrEmptyStateTrigger)d; var val = e.NewValue; - obj.SetActive(IsNullOrEmpty(val)); + obj.SetActive(IsActive = IsNullOrEmpty(val)); if (val == null) { diff --git a/UnitTests/UnitTests.UWP/UI/Triggers/Test_IsNullOrEmptyStateTrigger.cs b/UnitTests/UnitTests.UWP/UI/Triggers/Test_IsNullOrEmptyStateTrigger.cs new file mode 100644 index 00000000000..bcfae42570c --- /dev/null +++ b/UnitTests/UnitTests.UWP/UI/Triggers/Test_IsNullOrEmptyStateTrigger.cs @@ -0,0 +1,41 @@ +using Microsoft.Toolkit.Uwp; +using Microsoft.Toolkit.Uwp.UI.Triggers; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Data; + +namespace UnitTests.UWP.UI.Triggers +{ + [TestClass] + [TestCategory("Test_IsNullOrEmptyStateTrigger")] + public class Test_IsNullOrEmptyStateTrigger : VisualUITestBase + { + [TestMethod] + public async Task IsNullOrEmptyStateTrigger_SelectedItem() + { + await App.DispatcherQueue.EnqueueAsync(async () => + { + //Grid grid = CreateGrid(width, height); + var listView = new ListView { Name="myListView"}; + await SetTestContentAsync(listView); + + var trigger = new IsNullOrEmptyStateTrigger(); + Binding nullOrEmptyStateBinding = new Binding(); + nullOrEmptyStateBinding.Source = this; // listView; + nullOrEmptyStateBinding.Path = new PropertyPath("SelectedItem"); + nullOrEmptyStateBinding.Mode = BindingMode.OneWay; + BindingOperations.SetBinding(listView, ListView.SelectedItemProperty, nullOrEmptyStateBinding); + + var bol = IsNullOrEmptyStateTrigger.IsActive; + + Assert.AreEqual(true, bol); + }); + } + } +} diff --git a/UnitTests/UnitTests.UWP/UnitTests.UWP.csproj b/UnitTests/UnitTests.UWP/UnitTests.UWP.csproj index cdbb101c62a..0d5bafa2ad3 100644 --- a/UnitTests/UnitTests.UWP/UnitTests.UWP.csproj +++ b/UnitTests/UnitTests.UWP/UnitTests.UWP.csproj @@ -259,6 +259,7 @@ + From fac2b1b91fecefaf6b97cd46fdc760ef64f5d0d0 Mon Sep 17 00:00:00 2001 From: Darren Batchelor Date: Fri, 10 Dec 2021 14:45:25 -0800 Subject: [PATCH 2/7] Change default value from true to null --- .../Triggers/IsNullOrEmptyStateTrigger.bind | 1 + .../Triggers/IsNullOrEmptyStateTrigger.cs | 5 ++++- .../UI/Triggers/Test_IsNullOrEmptyStateTrigger.cs | 11 +++++------ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Triggers/IsNullOrEmptyStateTrigger.bind b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Triggers/IsNullOrEmptyStateTrigger.bind index 51ccd36ebef..c4c757366fc 100644 --- a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Triggers/IsNullOrEmptyStateTrigger.bind +++ b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Triggers/IsNullOrEmptyStateTrigger.bind @@ -26,6 +26,7 @@ + diff --git a/Microsoft.Toolkit.Uwp.UI/Triggers/IsNullOrEmptyStateTrigger.cs b/Microsoft.Toolkit.Uwp.UI/Triggers/IsNullOrEmptyStateTrigger.cs index f5692a72879..a22b06f09bd 100644 --- a/Microsoft.Toolkit.Uwp.UI/Triggers/IsNullOrEmptyStateTrigger.cs +++ b/Microsoft.Toolkit.Uwp.UI/Triggers/IsNullOrEmptyStateTrigger.cs @@ -28,8 +28,11 @@ public object Value /// Identifies the DependencyProperty /// public static readonly DependencyProperty ValueProperty = - DependencyProperty.Register(nameof(Value), typeof(object), typeof(IsNullOrEmptyStateTrigger), new PropertyMetadata(true, OnValuePropertyChanged)); + DependencyProperty.Register(nameof(Value), typeof(object), typeof(IsNullOrEmptyStateTrigger), new PropertyMetadata(null, OnValuePropertyChanged)); + /// + /// Gets a value indicating whether the trigger is active. + /// public static bool IsActive { get; private set; } private static void OnValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) diff --git a/UnitTests/UnitTests.UWP/UI/Triggers/Test_IsNullOrEmptyStateTrigger.cs b/UnitTests/UnitTests.UWP/UI/Triggers/Test_IsNullOrEmptyStateTrigger.cs index bcfae42570c..9dac624ea3e 100644 --- a/UnitTests/UnitTests.UWP/UI/Triggers/Test_IsNullOrEmptyStateTrigger.cs +++ b/UnitTests/UnitTests.UWP/UI/Triggers/Test_IsNullOrEmptyStateTrigger.cs @@ -1,10 +1,10 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + using Microsoft.Toolkit.Uwp; using Microsoft.Toolkit.Uwp.UI.Triggers; using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; @@ -21,13 +21,12 @@ public async Task IsNullOrEmptyStateTrigger_SelectedItem() { await App.DispatcherQueue.EnqueueAsync(async () => { - //Grid grid = CreateGrid(width, height); var listView = new ListView { Name="myListView"}; await SetTestContentAsync(listView); var trigger = new IsNullOrEmptyStateTrigger(); Binding nullOrEmptyStateBinding = new Binding(); - nullOrEmptyStateBinding.Source = this; // listView; + nullOrEmptyStateBinding.Source = this; nullOrEmptyStateBinding.Path = new PropertyPath("SelectedItem"); nullOrEmptyStateBinding.Mode = BindingMode.OneWay; BindingOperations.SetBinding(listView, ListView.SelectedItemProperty, nullOrEmptyStateBinding); From 0a7677c9165bdf667e36dadeb263ca5f6b25c3c2 Mon Sep 17 00:00:00 2001 From: Darren Batchelor Date: Mon, 13 Dec 2021 14:50:41 -0800 Subject: [PATCH 3/7] Bring in another control for trigger --- .../Triggers/IsNullOrEmptyStateTrigger.bind | 31 +++++++++++++++++-- .../IsNullOrEmptyStateTriggerPage.xaml.cs | 25 ++++++++++++++- .../Triggers/IsNullOrEmptyStateTrigger.cs | 3 +- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Triggers/IsNullOrEmptyStateTrigger.bind b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Triggers/IsNullOrEmptyStateTrigger.bind index c4c757366fc..2d03d6c68d4 100644 --- a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Triggers/IsNullOrEmptyStateTrigger.bind +++ b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Triggers/IsNullOrEmptyStateTrigger.bind @@ -26,7 +26,6 @@ - @@ -34,6 +33,18 @@ + + + + + + + + + + + + @@ -44,7 +55,7 @@ - +