Używam biblioteki MVVM Light. Z tej biblioteki używam RelayCommand<T>
do definiowania poleceń z argumentem typu T
.Jak przekazać wartość Nullable <Boolean> do CommandParameter?
Teraz zdefiniowano RelayCommand
która wymaga argumentu typu 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;
}
}
Jak mogę przypisać CommandParameter z mojego kodu XAML?
Starałem się przekazać wartość logiczną, ale to powoduje następujący wyjątek:
System.InvalidCastException: Nieprawidłowy obsady z 'System.Boolean' do „System.Nullable`1 [ [System.Boolean, mscorlib, wersja = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]] '.
Próbowałem również zdefiniować właściwości statyczne zawierające bool? Wartości i odwoływać się do nich z 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}" />
Ale to powoduje ten sam wyjątek do rzucania. Próbowałem również zwrócić new Nullable<bool>(true)
, ale zgodnie z oczekiwaniami ma to ten sam wynik.
Widziałeś to? http://stackoverflow.com/questions/2850629/declare-a-nullable-int-int-using-xaml – tolanj