Tôi đang sử dụng thư viện MVVM Light. Từ thư viện này, tôi sử dụng RelayCommand<T>
để xác định lệnh với đối số thuộc loại T
.Làm cách nào để chuyển giá trị Nullable <Boolean> cho CommandParameter?
Bây giờ tôi đã xác định một RelayCommand
mà đòi hỏi một đối số kiểu 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;
}
}
Làm thế nào tôi có thể gán CommandParameter từ mã XAML của tôi?
Tôi đã cố gắng để vượt qua một giá trị boolean, nhưng điều đó gây ra ngoại lệ sau đây:
System.InvalidCastException: dàn diễn viên không hợp lệ từ 'System.Boolean' thành 'System.Nullable`1 [ [System.Boolean, mscorlib, Phiên bản = 4.0.0.0, Văn hóa = trung lập, PublicKeyToken = b77a5c561934e089]] '.
Tôi cũng đã cố gắng xác định các thuộc tính tĩnh có chứa bool? giá trị và tham chiếu chúng từ 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}" />
Nhưng điều này gây ra cùng một ngoại lệ được ném. Tôi cũng đã cố gắng trả lại new Nullable<bool>(true)
, nhưng như mong đợi, điều này có cùng kết quả.
Bạn đã thấy điều này chưa? http://stackoverflow.com/questions/2850629/declare-a-nullable-int-int-using-xaml – tolanj