我有一个控件,其中包含我的自定义依赖项属性,如下所示:
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
答案 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;
}