Laden...

[WPF] MVVM CommandBinding in anderem Projekt.

Erstellt von xKushGene vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.309 Views
X
xKushGene Themenstarter:in
91 Beiträge seit 2017
vor 7 Jahren
[WPF] MVVM CommandBinding in anderem Projekt.

Ich habe mir das Tutorial von: https://www.codeproject.com/Tips/813345/Basic-MVVM-and-ICommand-Usage-Example angeschaut und stoße aber auf ein Problem.

Als erstes funktioniert das MessageBox bei mir nicht.
Was aber auch egal ist, da ich das nicht brauche.

Nun möchte ich, dass sich per Button Click der Content eines Frames ändert.

Meine XAML im Ui.Desktop Projekt sieht wie folgt aus:

<Frame NavigationUIVisibility="Hidden" Content="{Binding Content}" x:Name="Main" Background="Cyan" Grid.Row="0" Grid.Column="1" Grid.RowSpan="3">

Nun kommen wir zu meinem Logic.Ui Projekt.
In der MainViewModel steht der Code übernommen von dem Tutorial, welches oben verlinkt ist mit folgenden ergänzungen:

private ICommand content;
public ICommand Content
        {
            get { return content; }
            set { content = value; }
        }
public void ShowMessage(object obj)
        {
            Content =  
        }

Nun möchte ich Content = new Show.PrivateCustomers_show(); eingeben.
Aber natürlich kennt Logic.Ui nicht die Ordner und Seiten von Desktop.Ui.
Das soll ja nehme ich an auch so bleiben.

Wie kann ich das ganze also realisieren?
Beschäftige mich nun seit 2 Tagen damit und verstehe das ganze einfach nicht, da jede Anleitung anders ist. Beim Rheinwerk ebook wird es auch nicht super erklärt.

D
985 Beiträge seit 2014
vor 7 Jahren

Hmm, sieht nach einem wilden Mix von MVVM und Spaghetti-Code aus.

Das Beispiel hast du (nach meiner Einschätzung) gar nicht verstanden, weil dir das Grundverständnis von MVVM fehlt.

Leider bin ich ratlos wie man dieses Verständnis kurz und knapp vermitteln kann.

Arbeite das Beispiel doch mal völlig losgelöst von deinem aktuellen Projekt durch, evtl. bringt es dich näher an das Verständnis von MVVM.

4.939 Beiträge seit 2008
vor 7 Jahren

Da kann ich nur zustimmen. Noch als Hinweis: ICommand funktioniert beim Binding nur für Aktionen, wie z.B. bei einem Button-Click, nicht für Content.

Wenn du bei Frames den Content austauschen möchtest, dann benutze am besten dafür den NavigationService, s.a. WPF Navigation.

5.658 Beiträge seit 2006
vor 7 Jahren

Hi xKushGene,

ein Command ist eine Benutzeraktion, die an die Command-Eigenschaft eines Steuerelements gebunden wird.

Die ContentControl.Content-Eigenschaft enthält Daten, die im Steuerelement angezeigt bzw. bearbeitet werden sollen.

Du versuchst in deinem Code, ein Command an die Content-Eigenschaft zu binden. Das ergibt aber überhaupt keinen Sinn. Ich würde empfehlen, dir erstmal ein Grundverständnis über MVVM zu verschaffen. Dann sollten sich auch Fragen nach den Abhängigkeiten zwischen unterschiedlichen Projekten beantworten.

Weeks of programming can save you hours of planning