c# - MarkupExtension,IValueConverter 默认构造函数
问题描述
我很困惑为什么在这个用例中需要默认构造函数。
<Button Name="RemoveWord" IsEnabled="{Binding SearchText.Length, Converter={aw:CountToBoolConverter CountToBoolConverter}, ElementName=WordForAction }" />
我的转换器是
public class CountToBoolConverter : MarkupExtension, IValueConverter
{
public CountToBoolConverter(string value)
{
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool enabled = (int)value > 0;
return enabled;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
在这种情况下使用的默认构造函数是什么,我怎么知道它需要什么参数?
解决方案
您的 MarkupExtension 需要一个带有字符串参数的构造函数(这不是默认构造函数),因为您向创建转换器的 XAML 表达式添加了一个不必要的字符串:
Converter={aw:CountToBoolConverter CountToBoolConverter}
这里的第二个CountToBoolConverter
字符串是没有意义的,表达式应该是
Converter={aw:CountToBoolConverter}
推荐阅读
- ruby-on-rails - 在构建一个新的本地目录以在本地存放应用程序之后,有没有人遇到过 Heroku 上的新部署崩溃的经历?
- c++ - 我可以像 C# 的 Action 一样使用 C++ 函数指针吗?
- amazon-web-services - AWS IOT 政策文件
- amazon-web-services - 用于静态网站托管的 S3 存储桶端点
- python - PyQt5 window.close() 不会关闭窗口,但 window.open() 工作正常
- spring - 具有类级别 url 注释的性能影响
- c# - 在屏幕共享程序中使用哈希存储图像缓冲区的内存管理
- laravel - 如何在 laravel 中批准多重身份验证
- regex - ora 06512/04088 INSERT INTO 语句时触发错误
- shell - 在 ubuntu 上安装 Opensmile