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

时间:2010-01-06 23:07:19

标签: wpf xaml

我想替换

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

类似

<Button ... CommandParameter="{???}"/>

1 个答案:

答案 0 :(得分:9)

您可以通过从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}" />