SelectorItemEx.cs (1763B)
1 using Windows.UI.Input; 2 using Windows.UI.Xaml; 3 using Windows.UI.Xaml.Controls; 4 using Windows.UI.Xaml.Controls.Primitives; 5 using Windows.UI.Xaml.Input; 6 7 namespace File360 8 { 9 public static class SelectorItemEx 10 { 11 public static bool GetToggleSelectedOnHold(SelectorItem item) 12 { 13 return (bool)item.GetValue(ToggleSelectedOnHoldProperty); 14 } 15 16 public static void SetToggleSelectedOnHold(SelectorItem item, bool value) 17 { 18 item.SetValue(ToggleSelectedOnHoldProperty, value); 19 } 20 21 public static readonly DependencyProperty ToggleSelectedOnHoldProperty = 22 DependencyProperty.RegisterAttached( 23 "ToggleSelectedOnHold", 24 typeof(bool), 25 typeof(SelectorItemEx), 26 new PropertyMetadata( 27 false, 28 ToggleSelectedOnHoldChanged)); 29 30 private static void ToggleSelectedOnHoldChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) 31 { 32 var item = o as SelectorItem; 33 if (item == null) 34 return; 35 36 var oldValue = (bool)e.OldValue; 37 var newValue = (bool)e.NewValue; 38 39 if (oldValue && !newValue) 40 { 41 item.Holding -= Item_Holding; 42 } 43 else if (newValue && !oldValue) 44 { 45 item.Holding += Item_Holding; 46 } 47 } 48 49 private static void Item_Holding(object sender, HoldingRoutedEventArgs e) 50 { 51 var item = sender as SelectorItem; 52 if (item == null) 53 return; 54 55 56 if (e.HoldingState == HoldingState.Started) 57 item.IsSelected = !item.IsSelected; 58 } 59 } 60 }