1

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

 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

4

1 回答 1

0

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

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

从这里尝试这个示例作为如何访问它们的指南:

    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;
        }
于 2012-05-24T09:08:10.007 回答