MarkupExtension,IValueConverter 默认构造函数
MarkupExtension, IValueConverter Defaul Constructor
我很困惑为什么在这个用例中需要默认构造函数。
<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}
我很困惑为什么在这个用例中需要默认构造函数。
<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}