Я использую библиотеку MVVM Light. Из этой библиотеки я использую RelayCommand<T>
для определения команд с аргументом типа T
.Как передать значение Nullable <Boolean> значение CommandParameter?
Теперь я определил RelayCommand
, который требует аргумент типа Nullable<bool>
:
private RelayCommand<bool?> _cmdSomeCommand;
public RelayCommand<bool?> CmdSomeCommand
{
get
{
if (_cmdSomeCommand == null)
{ _cmdSomeCommand = new RelayCommand<bool?>(new Action<bool?>((val) => { /* do work */ })); }
return _cmdSomeCommand;
}
}
Как я могу назначить CommandParameter из моего XAML кода?
Я попытался передать логическое значение, но это вызывает следующее исключение:
System.InvalidCastException: Invalid бросок от 'System.Boolean' до «System.Nullable`1 [ [System.Boolean, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]] '.
Я также пытался определить статические свойства, содержащие bool? значения и ссылки на них из XAML:
public static class BooleanHelper
{
public static bool True { get { return true; } }
public static bool False { get { return false; } }
public static bool? NullableTrue { get { return true; } }
public static bool? NullableFalse { get { return false; } }
}
XAML:
<Button Command="{Binding CmdSomeCommand}" CommandParameter="{x:Static my:BooleanHelper.NullableTrue}" />
Но это приводит к тому же исключение быть выброшено. Я также попытался вернуть new Nullable<bool>(true)
, но, как и ожидалось, это имеет тот же результат.
Вы видели это? http://stackoverflow.com/questions/2850629/declare-a-nullable-int-int-using-xaml – tolanj