获取自定义依赖属性

时间:2012-05-24 07:50:26

标签: silverlight reflection dependency-properties

我有一个控件,其中包含我的自定义依赖项属性,如下所示:

 public static readonly DependencyProperty MouseEnterColorProperty =
            DependencyProperty.Register("MouseEnterColor", typeof (Color), typeof (SCADAPolyline), new PropertyMetadata(default(Color)));

        public Color MouseEnterColor
        {
            get { return (Color) GetValue(MouseEnterColorProperty); }
            set { SetValue(MouseEnterColorProperty, value); }
        }

它奇怪的问题。我正在使用反射获取我的属性来设置新值。但是无法得到我的属性。我尝试了从type.GetFields()

的所有可能性
 FieldInfo fieldInfo = type.GetField(name, BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Static);

or 

 fieldInfo = type.GetFields(BindingFlags.Static | BindingFlags.Public)
                                          .Where(p => p.FieldType.Equals(typeof(DependencyProperty)) && p.Name==name).FirstOrDefault();

听起来我的财产不见了。我无法访问,这个问题让我很生气。 我怎么能解决这个问题的任何想法?我正在使用silverlight 5.0

1 个答案:

答案 0 :(得分:0)

依赖属性不是字段。它不是通常意义上的类定义的一部分。

在幕后,它存储在依赖属性的集合中。

请尝试使用此示例from here作为如何访问它们的指南:

    public static class DependencyObjectHelper
    {
        public static List<DependencyProperty> GetDependencyProperties(Object element)
        {
            List<DependencyProperty> properties = new List<DependencyProperty>();
            MarkupObject markupObject = MarkupWriter.GetMarkupObjectFor(element);
            if (markupObject != null)
            {
                foreach (MarkupProperty mp in markupObject.Properties)
                {
                    if (mp.DependencyProperty != null)
                    {
                        properties.Add(mp.DependencyProperty);
                    }
                }
            }

            return properties;
        }