C# 派生类中未写入DependencyProperty

C# 派生类中未写入DependencyProperty,c#,wpf,xaml,inheritance,dependency-properties,C#,Wpf,Xaml,Inheritance,Dependency Properties,我正在使用WPF/XAML,并基于名为container的窗口定义了自己的视图container有一个名为CurrentElementProperty的DependencyProperty链接到属性CurrentElement。我的问题是属性的set方法从未从DerivedContainer调用。如果在属性注册期间将typeof(Container)更改为typeof(DerivedContainer),则会调用它。我几乎可以肯定,我在注册过程中做错了什么 容器的定义 class Contain

我正在使用WPF/XAML,并基于名为
container
窗口定义了自己的视图
container
有一个名为
CurrentElementProperty
的DependencyProperty链接到属性
CurrentElement
。我的问题是属性的
set
方法从未从
DerivedContainer
调用。如果在属性注册期间将
typeof(Container)
更改为
typeof(DerivedContainer)
,则会调用它。我几乎可以肯定,我在注册过程中做错了什么

容器的定义

class Container : Window
{
    public static readonly DependencyProperty CurrentElementProperty = 
        DependencyProperty.Register(
            "CurrentElement",
            typeof(Element),
            typeof(Container),
            new FrameworkPropertyMetadata(
                null,
                FrameworkPropertyMetadataOptions.Inherits));
    public Element CurrentElement
    {
        get
        {
            return (Element)this.GetValue(Container.CurrentElementProperty);
        }
        set
        {
            this.SetValue(Container.CurrentElementProperty, value);
        }
    }
}
public partial class DerivedContainer : Container
{
    public DerivedContainer()
    {
        InitializeComponent();
    }
}
派生容器的XAML(我删除了标准XML命名空间定义)

我的问题是,属性的set方法从未从DerivedContainer调用

这不是问题——这是预期的行为。WPF直接调用
SetValue
,而不是通过包装器。包装器是为了方便其他客户机代码而存在的。如果在设置属性时需要执行某些操作,则需要在
dependencProperty.register
调用中注册回调

public partial class DerivedContainer : Container
{
    public DerivedContainer()
    {
        InitializeComponent();
    }
}