Я хотел бы реализовать набор похожих подключенных поведений для использования в приложении WPF.
Поскольку все они имеют общий шаблонный код, который я не хочу повторять для каждого, я хотел бы создать базовое поведение, наследуемое от него.
Но так как все в прикрепленном поведении статично, я не знаю, как это сделать.
В качестве примера возьмем это поведение, которое выполняет метод для mousedown (реальное поведение, конечно, будет делать что-то непростое в обработчике событий):
public static class StupidBehavior
{
public static bool GetIsEnabled(DependencyObject obj)
{
return (bool)obj.GetValue(IsEnabledProperty);
}
public static void SetIsEnabled(DependencyObject obj, bool value)
{
obj.SetValue(IsEnabledProperty, value);
}
// Using a DependencyProperty as the backing store for ChangeTooltip. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsEnabledProperty =
DependencyProperty.RegisterAttached("IsEnabled", typeof(bool), typeof(StupidBehavior), new UIPropertyMetadata(false, IsEnabledChanged));
private static void IsEnabledChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
{
((UIElement)sender).MouseDown += { (o,e) => MyMethod(); };
}
private static void MyMethod()
{
MessageBox.Show("Boo");
}
}
Теперь я хотел бы создать новое поведение, которое должно иметь другую реализацию MyMethod, а также несколько дополнительных свойств, управляющих им. Как это сделать?