45 lines
1.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|