是否可以为绑定(bind)内联定义类型转换器(无资源)?
像这样:
<Button Visibility="{Binding ElementName=checkBox, Path=IsChecked, Converter={new BooleanToVisibilityConverter}" />
最佳答案
您可以通过自定义 MarkupExtension
创建和公开您的转换器,这将为您提供您正在寻找的内联声明:
public class BooleanToVisibilityConverterExtension : MarkupExtension, IValueConverter
{
private BooleanToVisibilityConverter converter;
public BooleanToVisibilityCoverterExtension() : base()
{
this.converter = new BooleanToVisibilityConverter();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return this.converter.Convert(value, targetType, parameter, culture);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return this.converter.ConvertBack(value, targetType, parameter, culture);
}
}
现在您可以使用 MarkupExtension 内联来创建一个新的转换器:
<Button Visibility="{Binding Converter={local:BooleanToVisibilityConverter} ...}" .. />
关于c# - 是否可以为绑定(bind)内联定义转换器(没有资源)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6799483/