簡體   English   中英

RelayCommand <bool> 拋出無效的強制轉換異常

[英]RelayCommand<bool> throws invalid cast exception

我正在嘗試參數化RelayCommand,但遇到運行時強制轉換異常。

這是相關的xaml和視圖模型行:

XAML

<MenuItem Header="Save Project As" Command="{Binding Main.SaveProjectAsRelayCommand}" CommandParameter="false" />

視圖模型

public RelayCommand<bool> SaveProjectAsRelayCommand { get; set; }

SaveProjectAsRelayCommand = new RelayCommand<bool>(SaveProjectAs, ProjectTaskCanExecute);

private void SaveProjectAs(bool b){...}
private bool ProjectTaskCanExecute(bool b){...}

當我單擊文件菜單時,GalaSoft會拋出一個

InvalidCastException(“指定的類型轉換無效)

當我從所有內容中刪除參數時,效果很好。

我是否需要做一些事情以使“ false”被強制轉換為布爾值?

類型轉換器必須將其轉換為字符串而不是布爾值。

<MenuItem Header="Save Project As" Command="{Binding Main.SaveProjectAsRelayCommand}" >
 <MenuItem.CommandParameter>
      <x:Boolean>False<x:Boolean>
 </MenuItem.CommandParameter>
</MenuItem>

嘗試以上。 您將必須在XAML中使用以下名稱空間。

xmlns:x="clr-namespace:System;assembly=mscorlib"

或者,您可以在綁定到的“主”中創建一個屬性

<MenuItem Header="Save Project As" Command="{Binding Main.SaveProjectAsRelayCommand}" CommandParameter="{Binding Main.IsTask}" />

在主虛擬機中,您將擁有

public bool IsTask{get;set;}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM