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.
    
  • 相关阅读:
    Token-Pasting Operator (##) and Stringizing Operator (#)
    记录Debug神经网络的方法
    正则表达式备忘
    概率论备忘
    tensorflow学习
    实现trie树
    数组练习
    递归实现简单实例
    蛇形三角矩阵
    近期工作---Linux下基于Cuckoo沙箱的API适配问题
  • 原文地址:https://www.cnblogs.com/liangouyang/p/1260954.html
Copyright © 2011-2022 走看看