MarkupExtension:在设计时不评估更改构造函数参数

时间:2016-01-07 09:14:30

标签: c# wpf markup-extensions xaml-designer

以下是它的样子:

更改标记扩展名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;
    }
}

有关如何使设计器使用构造函数参数的方法与使用属性相同的方法吗?

1 个答案:

答案 0 :(得分:1)

似乎可以通过以下方式使用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;
    }
}