MarkupExtension,IValueConverter默认构造函数

时间:2019-03-02 19:21:14

标签: c# wpf markup-extensions

我很困惑为什么在这种用例中需要默认构造函数。

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

在这种情况下,默认的构造函数是什么?我怎么知道它需要什么参数?

1 个答案:

答案 0 :(得分:1)

您的MarkupExtension需要一个带有字符串参数的构造函数(这不是默认的构造函数),因为您在创建转换器的XAML表达式中添加了不必要的字符串:

Converter={aw:CountToBoolConverter CountToBoolConverter}

这里的第二个CountToBoolConverter字符串毫无意义,表达式应该只是

Converter={aw:CountToBoolConverter}