andrew4582

ItemSelectionChangedBehavior

Jan 14th, 2013
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.81 KB | None | 0 0
  1. using System.Collections;
  2. using System.Diagnostics;
  3. using System.Linq;
  4. using System.Windows;
  5. using System.Windows.Controls;
  6. using System.Windows.Input;
  7. using Telerik.Windows.Controls;
  8. using System;
  9.  
  10. namespace App.UI.Behaviors
  11. {
  12.  
  13.     public class ItemSelectionChangedBehavior
  14.     {
  15.         #region Command Dependency Property
  16.  
  17.         public static readonly DependencyProperty CommandProperty = DependencyProperty.RegisterAttached(
  18.             "Command",
  19.             typeof(ICommand),
  20.             typeof(ItemSelectionChangedBehavior),
  21.             new UIPropertyMetadata(null, OnCommandChanged));
  22.  
  23.  
  24.         public static ICommand GetCommand(DependencyObject obj)
  25.         {
  26.             return (ICommand)obj.GetValue(CommandProperty);
  27.         }
  28.  
  29.         public static void SetCommand(DependencyObject obj, ICommand value)
  30.         {
  31.             obj.SetValue(CommandProperty, value);
  32.         }
  33.  
  34.         static void OnCommandChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
  35.         {
  36.             if (args.OldValue != null)
  37.             {
  38.                 if (sender is RadListBox)
  39.                 {
  40.                     var lstBox = sender as RadListBox;
  41.                     if (lstBox != null)
  42.                     {
  43.                         lstBox.SelectionChanged -= ListBox_SelectionChanged;
  44.                     }
  45.                 }
  46.                 else if (sender is RadGridView)
  47.                 {
  48.                     var gview = sender as RadGridView;
  49.                     if (gview != null)
  50.                     {
  51.                         gview.SelectionChanged -= GridView_SelectionChanged;
  52.                     }
  53.                 }
  54.             }
  55.  
  56.             if (args.NewValue != null)
  57.             {
  58.                 if (sender is RadListBox)
  59.                 {
  60.                     var lstBox = sender as RadListBox;
  61.                     if (lstBox != null)
  62.                     {
  63.                         lstBox.SelectionChanged += ListBox_SelectionChanged;
  64.                     }
  65.                 }
  66.                 else if (sender is RadGridView)
  67.                 {
  68.                     var gview = sender as RadGridView;
  69.                     if (gview != null)
  70.                     {
  71.                         gview.SelectionChanged += GridView_SelectionChanged;
  72.                     }
  73.                 }
  74.             }
  75.         }
  76.  
  77.         #endregion
  78.  
  79.         static void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  80.         {
  81.             var listBox = sender as RadListBox;
  82.             if (listBox == null)
  83.                 return;
  84.  
  85.             var selectedFiles = (IList)listBox.SelectedItems;
  86.             var command = GetCommand(listBox);
  87.             if (command != null)
  88.             {
  89.                 if (command.CanExecute(selectedFiles))
  90.                 {
  91.                     command.Execute(selectedFiles);
  92.                 }
  93.             }
  94.             Debug.WriteLineIf(false, string.Format("ItemSelectionChangedBehavior -> ListBox.SelectedItems.Count: {0}", SelectedFiles.Count));
  95.         }
  96.  
  97.         static void GridView_SelectionChanged(object sender, SelectionChangeEventArgs e)
  98.         {
  99.             var gridView = sender as RadGridView;
  100.             if (gridView == null)
  101.                 return;
  102.  
  103.             var selectedFiles = gridView.SelectedItems.ToList();
  104.             var command = GetCommand(gridView);
  105.             if (command != null)
  106.             {
  107.                 if (command.CanExecute(selectedFiles))
  108.                 {
  109.                     command.Execute(selectedFiles);
  110.                 }
  111.             }
  112.  
  113.             Debug.WriteLineIf(false, string.Format("ItemSelectionChangedBehavior -> Grid.SelectedItems.Count: {0}", selectedFiles.Count));
  114.         }
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment