Casablanca: MVVM

Beitrag lesen

Hallo,

vielen Dank nochmals.

Hast du den Code von RelayCommand aus dem Artikel genommen? Wenn ja, dann solltest du den löschen und GalaSoft.MvvmLight.CommandWpf einbinden. Da ist das richtige RelayCommand drin.

Das hat funktioniert.

Ich sehe da nur ein ViewModel (ProductViewModel), und das wird dem DataContext vom MainWindow zugewiesen. Eine Variable dafür mit app zu benennen ist nicht richtig, denn die Application ist nochmal was anderes als das Haupt-Fenster.

Das ist richtig. Es ist so, weil ich nicht wusste, wie ich das zweite VieModel anbinden soll. Ich habe zwar nur eine View, ich wollte aber nur testen, wie das mit zwei ViewModels geht. Ich habe ein zweites ViewModel namens MenuViewModel angelegt, in dem die Logik vom Menu drin steht.

        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            MainWindow app = new MainWindow();
            //ProductViewModel context = new ProductViewModel();

            MenuViewModel context = new MenuViewModel();

            app.DataContext = context;
            app.Show();
        }

Außerdem ist auch noch was in die App.xaml eingefügt worden. Das brauchst du, um in der View (im XAML-Code) den DataContext so wie in ViewModelLocator.cs im Kommentar beschrieben deklarativ festlegen zu können.

Soweit ich sehen kann, ist bei mir nichte weiteres in App.xaml eingefügt worden.

Wie werden eigentlich die Events gehandhabt, die zur Laufzeit und ohne Benutzeraktivität ausgelöst werden müssen. Z.B. ich möchte an einer Stelle eine Messagebox anzeigen oder eine bestimmte Teil-View in eine bestimmte Stelle einfügen und Anzeigen.

Gruß