This project is read-only.

Selection Behavior

While selecting an item I needed to execute a command so that I can manage the operation related to selected music. I used attach property for that. Here is the implementation
public class SelectionBehavior
{
public static DependencyProperty SelectionChangedProperty =
DependencyProperty.RegisterAttached("SelectionChanged", typeof (ICommand), typeof (SelectionBehavior), new UIPropertyMetadata(OnPropertyChanged));

public static void SetSelectionChanged(DependencyObject target, ICommand value)
{
target.SetValue(SelectionChangedProperty, value);
}

/// <exception cref="InvalidOperationException">This behavior can be attached to Selector item only.</exception>
private static void OnPropertyChanged(DependencyObject target, DependencyPropertyChangedEventArgs e)
{
var element = target as Selector;
if (element == null)
throw new InvalidOperationException("This behavior can be attached to Selector item only.");
if ((e.NewValue != null) && (e.OldValue == null))
{
element.SelectionChanged += SelectionChanged;
}
else if ((e.NewValue == null) && (e.OldValue != null))
{
element.SelectionChanged -= SelectionChanged;
}
}

private static void SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var element = (UIElement) sender;
var command = (ICommand) element.GetValue(SelectionChangedProperty);
command.Execute(((Selector) sender).SelectedValue);
}
}
See Also Double Click Behavior

Last edited May 14, 2011 at 12:45 PM by hsmasud, version 1

Comments

No comments yet.