|
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
namespace MefBasic.Behaviors
{
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);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.