问题
I have the following code:
this.Object.GetType().GetProperty(this.PropertyName).GetValue(this.Object, null);
PropertyName is a string, containing the name of the property I want to get. This works fine for "normal" properties, but I can't get the "Canvas.LeftProperty" or "Canvas.TopProperty".
Can anyone help me out?
Thanks, Chris
回答1:
I think this is because Canvas.Left is attached property and to retrieve them try this:
private DependencyProperty GetAttachedProperty(DependencyObject obj, string propertyName, Type ownerType)
{
foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(obj,
new Attribute[] { new PropertyFilterAttribute(PropertyFilterOptions.All) }))
{
DependencyPropertyDescriptor dpd =
DependencyPropertyDescriptor.FromProperty(pd);
if (dpd != null && dpd.IsAttached)
{
if (string.Compare(dpd.DependencyProperty.Name, propertyName, StringComparison.CurrentCultureIgnoreCase) == 0 && dpd.DependencyProperty.OwnerType == ownerType)
{
return dpd.DependencyProperty;
}
}
}
return null;
}
Source
来源:https://stackoverflow.com/questions/11535952/getting-the-attached-property-canvas-left