在自定義控件像下面這樣的情況下,如何添加PropertyChangedCallback爲繼承的DependencyProperty IsEnabledProperty?WPF - 自定義控制 - 繼承的DependencyProperty和PropertyChangedCallback
public class MyCustomControl : ContentControl
{
// Custom Dependency Properties
static MyCustomControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyCustomControl), new FrameworkPropertyMetadata(typeof(MyCustomControl)));
// TODO (?) IsEnabledProperty.OverrideMetadata(typeof(MyCustomControl), new PropertyMetadata(true, CustomEnabledHandler));
}
public CustomEnabledHandler(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// Implementation
}
}
是的,有喜歡的另一種選擇聽IsEnabledChangeEvent
public class MyCustomControl : ContentControl
{
public MyCustomControl()
{
IsEnabledChanged += …
}
}
但我不喜歡在每一個實例中的方法註冊事件處理程序。所以我更喜歡元數據覆蓋。
OverrideMetadata有什麼問題?但請注意,它應該是FrameworkPropertyMetadata而不是PropertyMetadata。 – Clemens
@Clemens如果我在** XAML **中使用這個控件,我會收到錯誤:_Metadata覆蓋和基礎元數據必須是相同類型或派生類型._我也使用'FrameworkPropertyMetadata'嘗試它。 – David
它適用於FrameworkPropertyMetadata。再試一次。 – Clemens