|
using System.Windows;
using System.Windows.Input;
namespace Mainardi.ViewModels.CommandBase
{
public static class CreateCommandBinding
{
public static readonly DependencyProperty CommandProperty =
DependencyProperty.RegisterAttached("Command",
typeof(CommandModel),
typeof(CreateCommandBinding),
new PropertyMetadata(
new PropertyChangedCallback(OnCommandInvalidated)));
public static CommandModel GetCommand(DependencyObject sender)
{
return (CommandModel)sender.GetValue(CommandProperty);
}
public static void SetCommand(DependencyObject sender, CommandModel command)
{
sender.SetValue(CommandProperty, command);
}
private static void OnCommandInvalidated(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
{
UIElement element = (UIElement)dependencyObject;
element.CommandBindings.Clear();
CommandModel commandModel = e.NewValue as CommandModel;
if (commandModel != null)
{
element.CommandBindings.Add(
new CommandBinding(commandModel.Command,
commandModel.Executed,
commandModel.CanExecute));
}
CommandManager.InvalidateRequerySuggested();
}
}
}
|
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.