【发布时间】:2018-10-11 00:14:39
【问题描述】:
1) 对于“字体”,依赖属性继承可以开箱即用。 https://wpf.2000things.com/2014/03/31/1040-an-example-of-dependency-property-inheritance/
您可以更改主窗口上的“字体”,它会向下传播到用户控件(没有任何更改在任何子用户控件中都可以正常工作)。
2) 如果您想让 DP 继承对您自己的 DP 起作用,您的 DP 必须是“附加属性”,您可以通过
一种。 FrameworkPropertyMetadataOptions.Inherits
湾。从类订阅到属性继承:MyClass.InheritedValueProperty.AddOwner
http://devcomponents.com/blog/?p=495
“开箱即用”的 DP 怎么会开箱即用地获得 DP 继承,而如果您希望自己的 DP 继承起作用,那么有很多限制(您的 DP 必须是“附加属性”,事情实现(在任何订阅它的类中都有这么多样板代码)?
对于“开箱即用”的 WPF 实现,我假设框架基类 “DependencyObject” 中的那些样板代码?此外,“Font”是框架基类“Control”中定义的DP(甚至MainWindow也是一个Control)-
https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.control?view=netframework-4.7.2
https://docs.microsoft.com/en-us/dotnet/api/system.windows.window?view=netframework-4.7.2
WPF DepdendencyObject 必须为 Font 等开箱即用的 DP 实现开箱即用的 DP 继承?
【问题讨论】:
-
这个话题在Property Value Inheritance中有详细解释。请特别注意Making a Custom Property Inheritable 部分。