MVVM Light RelayCommandジェネリックタイプ固有の理由で、そのcanExecuteがバインディングで常にfalseに解決される原因が分かりますか?正しい振る舞いを得るために、私はオブジェクトを使い、それを望ましいタイプに変換しなければなりませんでした。MVVM Light canExecuteは常にRelayCommandでfalseを返します<bool> notReayCommand <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は文字列として使用されています。 trueを返すようにハードコーディングされたcanExecuteにどのような影響があると思いますか? – Rock
strange ...あなたは関数を入れようとすることができますか? RelayCommand x = new RelayCommand (req => {string s = "true";} req => canExecute()); プライベートブールcanExecute() { return true } –
sexta13