mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-02 15:50:51 +08:00
66 lines
1.8 KiB
C#
66 lines
1.8 KiB
C#
using System;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
|
|
namespace AIStudio.Wpf.DiagramDesigner.Additionals.Commands
|
|
{
|
|
public class CommandReference : Freezable, ICommand
|
|
{
|
|
public CommandReference()
|
|
{
|
|
// Blank
|
|
}
|
|
|
|
public static readonly DependencyProperty CommandProperty = DependencyProperty.Register("Command", typeof(ICommand), typeof(CommandReference), new PropertyMetadata(new PropertyChangedCallback(OnCommandChanged)));
|
|
|
|
public ICommand Command
|
|
{
|
|
get { return (ICommand)GetValue(CommandProperty); }
|
|
set { SetValue(CommandProperty, value); }
|
|
}
|
|
|
|
#region ICommand Members
|
|
|
|
public bool CanExecute(object parameter)
|
|
{
|
|
if (Command != null)
|
|
return Command.CanExecute(parameter);
|
|
return false;
|
|
}
|
|
|
|
public void Execute(object parameter)
|
|
{
|
|
Command.Execute(parameter);
|
|
}
|
|
|
|
public event EventHandler CanExecuteChanged;
|
|
|
|
private static void OnCommandChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
CommandReference commandReference = d as CommandReference;
|
|
ICommand oldCommand = e.OldValue as ICommand;
|
|
ICommand newCommand = e.NewValue as ICommand;
|
|
|
|
if (oldCommand != null)
|
|
{
|
|
oldCommand.CanExecuteChanged -= commandReference.CanExecuteChanged;
|
|
}
|
|
if (newCommand != null)
|
|
{
|
|
newCommand.CanExecuteChanged += commandReference.CanExecuteChanged;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Freezable
|
|
|
|
protected override Freezable CreateInstanceCore()
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|