file360

Log | Files | Refs

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 }