zoukankan      html  css  js  c++  java
  • WPF Dependency property ,overrideMetaData issue

     

    Seems to knowbecause MyStackPanel2 has  register, so will new a property, _metaMap has no base type's metadata, so if we use

     static MyStackPanel2()
            {
                MyStackPanel.IntDataProperty.OverrideMetadata(typeof(MyStackPanel2), new FrameworkPropertyMetadata(9));
     
                MyStackPanel.MinDateProperty.AddOwner(typeof(MyStackPanel2), new FrameworkPropertyMetadata(DateTime.Now, onMindateChange2));
            }

     

    The new metadata will merge basetype's metadata! For attached property, although register’s metaData is only stored at defaultmetaData _metaMap have no but overrideMetaData method will add new metadata to _metaMap, and will do merge too.

    And,MyStackPanel2 is sub class of MyStackPanel, so the merge will happen, if not sub class ,the merge will not happen either.like the code below:

    public partial class UserControlLabel : Label
    {
    static UserControlLabel()
            {
                MyStackPanel.MinDateProperty.OverrideMetadata(typeof(UserControlLabel), new FrameworkPropertyMetadata(DateTime.Now, onMinDateChangeUserControl));
     }
     
            public DateTime MinDate
            {
                get { return (DateTime)GetValue(MyStackPanel.MinDateProperty); }
                set { SetValue(MyStackPanel.MinDateProperty, value); }
            }
    }
     
    2. 

    This PropertyFromName hashtable is mainly use by the xaml->code process

    which can be found by analyzing the DependencyProperty.FromName() method using reflectors use by function..

    3. attched property register not use overridemetedata, because its ownertype can not be dependencyObject, _metadataMap need to use 
    DependencyObjectType.typeId as key.
    
  • 相关阅读:
    Python开发【第六篇】循环语句
    Python开发【第四篇】语句与函数
    Python开发【第三篇】数据类型
    Python开发【第二篇】:初始Python
    2019-10-11入博客第一篇文章
    设计模式——命令模式
    设计模式——职责链模式
    设计模式——单例模式
    设计模式——原型模式
    设计模式——建造者模式
  • 原文地址:https://www.cnblogs.com/liangouyang/p/1260954.html
Copyright © 2011-2022 走看看