Ich habe Probleme, den RelayCommand von MVVM Light in einer WPF-Anwendung zu verwenden, insbesondere wenn ich einen CanExecute-Delegaten verwenden möchte. Wenn ich diesen zweiten Parameter zum Konstruktor des Befehls hinzufüge, wird das MainWindow nie gestartet und ich muss die Anwendung vom Task-Manager beenden. Dieses Problem verschwindet, wenn ich den zweiten Parameter entferne. Ich habe herumgesucht und herausgefunden, dass MVVM Light zu einer portablen Klassenbibliothek wechselte, die einige Probleme mit dem CanExecute-Delegaten verursachte. Ich habe versucht, zu Version 4.2.32.7 von MVVM Light zurückzukehren, und habe auch versucht, den Galasoft.MvvmLight.CommandWpf-Namespace zu verwenden, aber keiner von beiden hat geholfen.Die Verwendung von RelayCommand in MVVM Light mit einem CanExecute-Delegaten führt dazu, dass meine Anwendung nicht gestartet wird
Ich sollte auch erwähnen, dass keine Build-Fehler (es sagt der Build ist erfolgreich) oder Kompilierungsfehler auftreten. Hier finden Sie einige einfache Code, wo ich das Problem gefunden:
public class MainViewModel : ViewModelBase
{
public MainViewModel()
{
}
private string myString;
public string MyString
{
get { return myString; }
set { Set("MyString", ref myString, value); }
}
private string myOtherString;
public string MyOtherString
{
get { return myOtherString; }
set { Set("MyOtherString", ref myOtherString, value); }
}
private RelayCommand myCommand;
public RelayCommand MyCommand
{
get
{
return myCommand ??
(myCommand = new RelayCommand(
() => MyOtherString = MyString,
() => MyString.Length > 5));
}
}
}
Meine Ansicht ist, nur zwei Textfelder: eine gebunden MyString und ein bis MyOtherString gebunden. Es gibt auch eine Schaltfläche, die an MyCommand gebunden ist. Weiß jemand, warum die Verwendung des CanExecute-Parameters meine Anwendung bricht?