Как написать объект значения в XAML, используя расширение разметки? - PullRequest
3 голосов
/ 07 января 2010

хочу заменить

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

с чем-то вроде

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

1 Ответ

9 голосов
/ 07 января 2010

Вы можете написать расширение разметки, наследуя класс 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}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...