从ButtonBase派生的类中的IsEnabledChanged

时间:2017-12-05 15:56:34

标签: c# wpf

我有一个控件,它继承自WPF类ButtonBase(System.Windows.Controls.Primitives.ButtonBase)。

我想定义一个函数,当基类中的IsEnabled属性发生变化时将调用该函数。

我可能真的很蠢,但我找不到一个简单的方法。 (没有可以覆盖的函数OnIsEnabledChanged函数。)

1 个答案:

答案 0 :(得分:1)

IsEnabled是依赖属性。 所以你必须覆盖元数据,就像这里:

public class MyButton : Button
{
    static MyButton()
    {
        MyButton.IsEnabledProperty.OverrideMetadata(typeof(MyButton),
            new FrameworkPropertyMetadata(string.Empty,
                FrameworkPropertyMetadataOptions.BindsTwoWayByDefault |
                FrameworkPropertyMetadataOptions.Journal,
                FunctionToCallOnPropertyChange, //property changed callback 
                null, // coerce value callback 
                true, // is animation prohibited 
                UpdateSourceTrigger.LostFocus));
    }

    private static void FunctionToCallOnPropertyChange(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
    {
        throw new NotImplementedException();
    }
}

MSDN Reference