DependencyProperty不是在派生类中编写的

时间:2013-04-12 07:50:00

标签: c# wpf xaml inheritance dependency-properties

我正在使用WPF / XAML,并根据名为window的{​​{1}}定义了我自己的视图。 container有一个名为container的DependencyProperty链接到属性CurrentElementProperty。我的问题是永远不会从CurrentElement调用属性的set方法。如果我在注册属性期间将DerivedContainer更改为typeof(Container),则会调用它。我几乎可以肯定,我在注册时做错了。

typeof(DerivedContainer)

的定义
Container

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); } } } 的XAML(我删除了标准的XML命名空间定义)

DerivedContainer

<local:Container x:Class="ns.DerivedContainer" xmlns:local="clr-namespace:ns"> <local:Container.CurrentElement> <Element /> </local:Container.CurrentElement> </local:Container> 背后的代码

DerivedContainer

1 个答案:

答案 0 :(得分:3)

  

我的问题是,从未从DerivedContainer

调用属性的set方法

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