我正在使用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
答案 0 :(得分:3)
我的问题是,从未从DerivedContainer
调用属性的set方法
这不是问题 - 这是预期的行为。 WPF直接调用SetValue
而不是通过包装器。包装器是为了方便其他客户端代码。如果您在设置属性时需要执行某些操作,则需要在DependencyProperty.Register
来电中注册回调。