Sic.Framework/MECF.Framework.UI.Client/ClientBase/Command/CommandSource.cs

45 lines
1.4 KiB
C#

using System.Windows;
namespace OpenSEMI.ClientBase.Command
{
public interface ICommandTrigger
{
void Initialize(FrameworkElement source);
}
public static class CommandSource
{
public static ICommandTrigger GetTrigger(FrameworkElement source)
{
return (ICommandTrigger)source.GetValue(TriggerProperty);
}
public static void SetTrigger(FrameworkElement source, ICommandTrigger value)
{
source.SetValue(TriggerProperty, value);
}
// Using a DependencyProperty as the backing store for Trigger. This enables animation, styling, binding, etc...
public static readonly DependencyProperty TriggerProperty =
DependencyProperty.RegisterAttached(
"Trigger1",
typeof(ICommandTrigger),
typeof(CommandSource),
new UIPropertyMetadata(
null,
TriggerPropertyChanged));
private static void TriggerPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
FrameworkElement element = d as FrameworkElement;
ICommandTrigger commandTrigger = e.NewValue as ICommandTrigger;
if (commandTrigger != null)
{
commandTrigger.Initialize(element);
}
}
}
}