C# MarkupExtension:未在设计时计算更改构造函数参数
下面是它的样子: 更改标记扩展名C# MarkupExtension:未在设计时计算更改构造函数参数,c#,wpf,markup-extensions,xaml-designer,C#,Wpf,Markup Extensions,Xaml Designer,下面是它的样子: 更改标记扩展名键属性时-一切正常 更改标记扩展构造函数参数时-它不会更新。解决方法是使用扩展名更新属性(更改Text),然后返回。然后正确计算值 这是分机号码: public class MyExtension : MarkupExtension { public string Key { get; set; } public MyExtension() { } public MyExtension(string 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;
}
}
关于如何使设计器以与属性相同的方式使用构造函数参数,您有什么想法吗?解决这种情况的方法是使用
构造函数参数属性
如下所示:
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;
}
}
你使用的是哪个版本的VS?@IlVic,没想到可能是VS bug。使用Microsoft Visual Studio Community 2015版本14.0.24720.00更新1。请告诉我它是否适用于您。您的MarkupExtension非常适用于—例如—Visual Studio 2010高级版(版本10.0.40219.1 SP1Rel)。如果需要,我也可以向Visual Studio 2013查询。但是我没有Visual Studio2015@IlVic,你确定吗?尝试在xaml中更改{local:My 1}->
{local:My 123}
是否在每次更改后在设计器窗口中正确更新{local:My Key=123}
可以工作,但是当我尝试更改时,如果没有键,它将保持不变。我试图禁用扩展,但问题仍然存在。是的,我确定。我复制了您的MyExtension
代码,然后构建了我的解决方案。然后,如果我在{local:My abc}
中更改{local:My a}
,那么“abc”将立即在XAML预览中呈现(或者您喜欢的设计器)。