次のコードがあります。
this.Object.GetType().GetProperty(this.PropertyName).GetValue(this.Object, null);
PropertyName は、取得するプロパティの名前を含む文字列です。これは「通常の」プロパティでは問題なく機能しますが、「Canvas.LeftProperty」または「Canvas.TopProperty」を取得できません。
誰でも私を助けることができますか?
ありがとう、クリス
次のコードがあります。
this.Object.GetType().GetProperty(this.PropertyName).GetValue(this.Object, null);
PropertyName は、取得するプロパティの名前を含む文字列です。これは「通常の」プロパティでは問題なく機能しますが、「Canvas.LeftProperty」または「Canvas.TopProperty」を取得できません。
誰でも私を助けることができますか?
ありがとう、クリス
これは Canvas.Left が添付プロパティであり、それらを取得するにはこれを試してください:
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;
}