c# - 标记扩展 : changing constructor argument is not evaluated in design time

标签 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;
    }
}

关于如何使设计器以与处理属性相同的方式处理构造函数参数的任何想法?

最佳答案

似乎要补救这种情况的方法是像这样使用 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;
    }
}

关于c# - 标记扩展 : changing constructor argument is not evaluated in design time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34651220/

相关文章:

c# - Linq to SQL 外键

c# - 在 Dispose 方法中关闭数据库连接是否正确?

C# 从数据库的 datagridview 创建图表

c# - XAML 中用于绑定(bind)到 ISubject<string> 的标记扩展

c# - 在 C# 中检测 PS/2 端口状态

c# - 在图像上绘制叠加层

wpf - 单个 xaml 文件中的 MVVM 两个 Viewmodel

c# - 防止 WPF 4.0 Datagrid 显示空列

wpf - 如何将 View 模型方法的结果数据绑定(bind)到 TextBox 属性?

wpf - .Net 4.5 中事件的标记扩展