MarkupExtension:在设计时不评估更改构造函数参数
MarkupExtension: changing constructor argument is not evaluated in design time
这是它的样子:
更改标记扩展时 Key
属性 - 一切正常。
更改标记扩展构造函数参数时 - 它不会更新。解决方法是使用扩展名更新 属性(更改 Text
),然后返回。然后正确评估值。
这是分机:
public class MyExtension : MarkupExtension
{
public string Key { get; set; }
public MyExtension() { }
public MyExtension(string key)
{
Key = key;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return Key;
}
}
关于如何使设计器以与 属性 相同的方式使用构造函数参数的任何想法?
似乎可以补救这种情况的方法是像这样使用 ConstructorArgumentAttribute
:
public class MyExtension : MarkupExtension
{
[ConstructorArgument("key")]
public string Key { get; set; }
public MyExtension() { }
public MyExtension(string key)
{
Key = key;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return Key;
}
}
这是它的样子:
更改标记扩展时 Key
属性 - 一切正常。
更改标记扩展构造函数参数时 - 它不会更新。解决方法是使用扩展名更新 属性(更改 Text
),然后返回。然后正确评估值。
这是分机:
public class MyExtension : MarkupExtension
{
public string Key { get; set; }
public MyExtension() { }
public MyExtension(string key)
{
Key = key;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return Key;
}
}
关于如何使设计器以与 属性 相同的方式使用构造函数参数的任何想法?
似乎可以补救这种情况的方法是像这样使用 ConstructorArgumentAttribute
:
public class MyExtension : MarkupExtension
{
[ConstructorArgument("key")]
public string Key { get; set; }
public MyExtension() { }
public MyExtension(string key)
{
Key = key;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return Key;
}
}