代码之家  ›  专栏  ›  技术社区  ›  Sergey Aldoukhov

如何使用标记扩展在XAML中写入值对象?

  •  3
  • Sergey Aldoukhov  · 技术社区  · 14 年前

    我想换一个

    <Button Text="Foo" Command="{Binding Foo}">
        <Button.CommandParameter>
            <System:Boolean>True</System:Boolean>
        </Button.CommandParameter>
    </Button>
    

    有点像

    <Button ... CommandParameter="{???}"/>
    
    1 回复  |  直到 14 年前
        1
  •  9
  •   itowlson    14 年前

    可以通过从MarkupExtension类派生并实现ProvideValue方法来编写标记扩展:

    public class BooleanValueExtension : MarkupExtension
    {
      private readonly bool _value;
    
      public BooleanValueExtension(bool value)
      {
        _value = value;
      }
    
      public override object ProvideValue(IServiceProvider serviceProvider)
      {
        return _value;
      }
    }
    

    然后可以使用大括号语法:

    <Button CommandParameter="{local:BooleanValue True}" />