3 Stimmen

Wie übergebe ich ein bestimmtes View-Modell-Objekt über CommandParam eines Buttons?

Ich habe ein einfaches WPF-Programm, das das Master-Detail-UI-Muster verwendet, wobei das Detail das aktuell ausgewählte Element einer Sammlung im Masterfenster anzeigt. Ich verwende MVVM, und jede XAML-Seite wird von einem ViewModel-Objekt unterstützt, das als DataContext festgelegt ist.

Jetzt möchte ich einen LÖSCHEN-Button im Masterfenster hinzufügen, um aus der Masterliste von Elementen zu löschen. Ich kann jedoch nicht herausfinden, wie ich das ViewModel-Objekt des aktuell ausgewählten Elements als CommandParameter an den gerouteten Befehls-Handlercode übergeben kann.

Vielen Dank im Voraus für jegliche Hinweise.

Mike

2voto

Ray Booysen Punkte 26896

Etwas Ähnliches wie das, was Paul gezeigt hat, ist, dass Ihr Ansichtsmodell weiß, welches Element aktuell ausgewählt ist. I.e.

public class MyVM
{
 public ObservableCollection MyCollection { get; set; }
 public MyObject CurrentItem { get; set; }
}

Ihr XAML kann dann einfach sein

CommandParameter="{Binding Path=CurrentItem}"

Solange Ihr Master-Panel die CurrentItem-Eigenschaft festlegt, wenn Sie es auswählen, kann Ihr Befehl einfach den CurrentItem als Befehlsparameter haben.

1voto

Paul Punkte 1722

Eine Möglichkeit wäre, jede Befehl mit einem Verweis auf das ViewModel zu erstellen und eine Eigenschaft im ViewModel zu erstellen, die an das aktuell ausgewählte Element gebunden ist. Auf diese Weise müssen Sie das ausgewählte Element nicht als Parameter übergeben - der Befehl kann es aus dem VM abrufen. Wenn dies für Ihre Umstände nicht geeignet ist, könnten Sie das ausgewählte Element etwas wie folgt übergeben:

Wo listBox_ ist eine Steuerelement, das von Selector abgeleitet ist.

Hoffe das hilft,

Paul

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X