c# - 是否可以为绑定(bind)内联定义转换器(没有资源)?

标签 c# .net wpf xaml

是否可以为绑定(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/

相关文章:

c# - UWP Raspberry Pi 网络服务器问题

c# - 如何将装饰器模式与 C# MEF 相结合?

c# - 在没有 WS-Management 服务的情况下通过 MI 访问 WMI 实例

c# - 第一个程序的规划和开发步骤

c# - 没有对 Task 的引用会导致内存泄漏吗?

c# - 显示加载窗口

wpf - 调整 WPF 列表或网格中的字体大小以正确使用空间

WPF 不可空数据绑定(bind)默认清除文本框?

c# - 关系的条件映射

wpf - 更换桌面墙纸/在桌面上绘制