有誰知道爲什麼使用MVVM Light RelayCommand通用類型會導致其canExecute始終解析爲綁定錯誤?爲了獲得正確的行爲,我必須使用一個對象,然後將其轉換爲所需的類型。MVVM Light canExecute始終爲false,並且RelayCommand <bool> not RelayCommand <object>
注意:canExecute被簡化爲布爾值來測試不起作用的塊,通常是屬性CanRequestEdit。
不起作用:
public ICommand RequestEditCommand {
get {
return new RelayCommand<bool>(commandParameter => { RaiseEventEditRequested(this, commandParameter); },
commandParameter => { return true; });
}
}
作品:
public ICommand RequestEditCommand {
get {
return new RelayCommand<object>(commandParameter => { RaiseEventEditRequested(this, Convert.ToBoolean(commandParameter)); },
commandParameter => { return CanRequestEdit; });
}
}
XAML:
<MenuItem Header="_Edit..." Command="{Binding RequestEditCommand}" CommandParameter="true"/>
我認爲CommandParameter是作爲一個字符串。 – sexta13
你是正確的,CommandParameter是作爲一個字符串。你如何認爲這會對canExecute產生影響,而硬編碼會返回true? – Rock
奇怪......你可以嘗試放入一個函數嗎?例如: RelayCommand x = new RelayCommand (req => {string s =「true」;},req => canExecute()); private bool canExecute() { return true } –
sexta13