c# auf Objekt einer anderen Methode zugreifen?

4 Antworten

ganz genau, möchte ich die Werte von dem Objekt haben auf welches der User in meiner View geklickt hat und dann im ViewModel damit weiter machen.

In den GUI-Frameworks von .NET (MAUI, WPF, Xamarin) gibt es dafür Bindings. Für die Selektion könnte man eine ListBox oder eine ähnliche Komponente verwenden, die bereits auf eine Selektion reagieren kann.

Beispiel:

Im View legst du die Komponente an und bindest ihre DependencyProperties:

<ListBox ItemsSource="{Binding Persons}" SelectedItem="{Binding SelectedPerson}" />

Im ViewModel wiederum werden die Properties angelegt, die genutzt werden sollen.

public ObservableCollection<Person> Persons { get; set; }
public Person SelectedPerson { get; set; }

Wenn sich die View bei Änderungen der selektierten Person automatisch aktualisieren soll, solltest du noch das INotifyPropertyChanged-Interface implementieren und das Event nach der Änderung triggern.

Beispiel:

private Person _selectedPerson;

public Person SelectedPerson
{
  get => _selectedPerson;
  set
  {
    if (value != _selectedPerson)
    {
      _selectedPerson = value;
      OnPropertyChanged(nameof(SelectedPerson));
    }
  }
}

Die einfachste Möglichkeit wäre das Klassenobjekt global zu deklarieren und nicht lokal in der ersten Methode.

Eine andere Möglichkeit wäre in der ersten Methode das Objekt als Rückgabewert zu setzen und in der zweiten Methode die erste aufzurufen. So erhält die zweite Methode das Objekt von der ersten und kann damit gnaz normal arbeiten.
Ob das umsetzbar ist, kommt natürlich darauf an, was die Methoden genau tun.

Woher ich das weiß:Studium / Ausbildung – Informatik Studium.

Entweder Objekt mitgeben, irgendwo zwischenspeichern oder als Singleton. Das wären meine ersten Gedanken dazu, wenn ich die Frage richtig verstehe

Stichworte: Getter und Setter von Objekten


apophis  22.05.2023, 17:21
Stichworte: Getter und Setter von Objekten

Getter und Setter sind Methoden, mit denen man auf Attribute einer anderen Klasse zugreifen kann.

Damit kann man nicht auf Variablen/Objekte einer anderen Methode zugreifen.

0