Silverlight: как передать True в CommandParameter? - PullRequest
4 голосов
/ 04 января 2012

Как мне передать True в CommandParameter?

В настоящее время я обязательно добавляю Boolean.True в словарь ресурсов, но это выглядит неуклюжим способом сделать это.

Ответы [ 3 ]

11 голосов
/ 04 января 2012

Поскольку параметры команды имеют тип «объект», синтаксический анализатор XAML не может выполнить преобразование типа для вас.Если вы передадите 'true', парсер не сможет узнать, что вы хотите, чтобы это значение было преобразовано в логическое значение.Вам придется сделать это явно.Вы можете использовать синтаксис элемента свойства:

<Button>
  <Button.CommandParameter>
    <sys:Boolean>true</sys:Boolean>
  </Button.CommandParameter>
</Button>

Где отображается пространство имен sys:

xmlns:sys="clr-namespace:System;assembly=mscorlib"
10 голосов
/ 26 апреля 2013

ColinE ответит хорошо, но я думаю, что немного лучше определить истину / ложь как ресурсы.Вы должны сделать это только один раз:

<UserControl.Resources>
    <sys:Boolean x:Key="BoolTrue">True</sys:Boolean>
    <sys:Boolean x:Key="BoolFalse">False</sys:Boolean>
</UserControl.Resources>

Затем вы можете ссылаться на него как StaticResource для CommandParameter:

<Button CommandParameter="{StaticResource BoolTrue}" />
1 голос
/ 29 июня 2016

ваш XAML изменится на это.

<Button 
    Command="{Binding Path=WhateverCommand}" 
    CommandParameter="{x:Static BooleanHelper.True}" />
...