C# 派生类中未写入DependencyProperty
我正在使用WPF/XAML,并基于名为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
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();
}
}