Weiß jemand, warum mit dem MVVM Light RelayCommand generischen Typ würde seine canExecute immer auf false für die Bindung auflösen spezifisch sein? Um das richtige Verhalten zu erhalten, musste ich ein Objekt verwenden und es dann in den gewünschten Typ konvertieren.MVVM Light canExecute immer falsch mit RelayCommand <bool> nicht RelayCommand <object>
HINWEIS: canExecute wurde zu einem booleschen Wert zum Testen des Blocks, der nicht funktioniert, vereinfacht und ist normalerweise eine Eigenschaft CanRequestEdit.
funktioniert nicht:
public ICommand RequestEditCommand {
get {
return new RelayCommand<bool>(commandParameter => { RaiseEventEditRequested(this, commandParameter); },
commandParameter => { return true; });
}
}
Works:
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"/>
Ich denke, dass CommandParameter als eine Zeichenfolge geht. – sexta13
Sie sind korrekt, CommandParameter wird als Zeichenfolge ausgeführt. Wie denkst du, dass dies einen Einfluss auf canExecute haben würde, das fest codiert ist, um wahr zurückzugeben? – Rock
seltsam ... können Sie versuchen, eine Funktion zu setzen? etwas wie: RelayCommand x = neu RelayCommand (req => {string s = "wahr";}, req => canExecute()); Private Bool canExecute() { Rückgabe True } –
sexta13