Laden...

Event wird nicht aboniert

Erstellt von Chris777 vor 2 Jahren Letzter Beitrag vor 2 Jahren 357 Views
C
Chris777 Themenstarter:in
3 Beiträge seit 2021
vor 2 Jahren
Event wird nicht aboniert

Hallo Leute,
ich bin neu hier und komme natürlich gleich mit einer Frage.
Ich habe eine WPF-Seite/Klasse, eine EventArgsKlasse und eine Klasse in der die Methoden sind.
In der Klasse gibt es eine Methode, die ein Event auslöst. In der WPF-Seite/Klasse gibt es eine Methode die darauf lauschen soll.
Leider aboniert die Methode das Event nicht und ich finde einfach nicht heraus warum sie das nicht tut. Wahrscheinlich eine ganz einfache Sache...

Sorry für die schlechte Schreibweise. Ich schreibe das größtenteils aus dem Kopf und ohne eine IDE. Ist nicht mein Rechner, auf dem ich gerade bin. 🙂

EventArgsKlasse


public class HalloEventArgs : EventArgs
{
    public string Name {get; set;}
}

Klasse mit den Methoden:


public delegate void XyzEventHandler(object sender, HalloEventArgs e);
public class ABC
{
   public void Begruessung()
{
   SagHallo("Chris");
}

public event XyzEventHandler begruessung;

protected virtual void SagHallo(string name)
{
   if(begruessung != null)
      {
         HalloEventArgs args = new HalloEventArgs
         {
            args.Name = name;
         }

         begruessung(this, args);

      }
}
}

Und nun die WPF Seite/Klasse


public partial class Home : Page
{
   ABC abc = new ABC;
   public Home
   {
      abc.begruessung += begruessung;
      InitializeComponent();
   }

   begruessung(object sender, HalloEventArgs e)
   {
       tb.text = e.Name;
   }
}

Was habe ich falsch gemacht?
Viele Grüße
Chris

16.834 Beiträge seit 2008
vor 2 Jahren

Was genau hast Du vor?

In WPF arbeitet man eigentlich nicht primär mit Events. WPF ist so konzipiert, dass der MVVM Pattern verwendet werden sollte.
[Artikel] MVVM und DataBinding

C
Chris777 Themenstarter:in
3 Beiträge seit 2021
vor 2 Jahren

Hallo Abt,
in der Methoden-Klasse gibt es eine Methode, die alle 30 sec einen Ping an eine IP sendet. Ist der Ping.Reply Success, soll in einer TextBox auf der WPF-Seite eine positive Meldung kommen. Ist der Ping nicht erfolgreich, soll eine negative Meldung kommen.
Ich wollte die Übermittlung des Statuses mal mit Events probieren.
Wenn man es normalerweise nicht so macht, dann werde ich etwas anderes versuchen. Bin immernoch am lernen und möchte mich an die Standards halten.

Viele Grüße
Chris

3.170 Beiträge seit 2006
vor 2 Jahren

Hallo,

wo wird denn die Methode Begruessung() der Klasse ABC überhaupt aufgerufen?
Ohne Aufruf wird kein Event ausgelöst...

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

C
Chris777 Themenstarter:in
3 Beiträge seit 2021
vor 2 Jahren

Hallo MarsStein,

wie gesagt, ich hab das Beispiel nur schnell ohne IDE geschrieben und habe den Button in der CodeBehind-Classe des WPF-Windows vergessen,
der bei Click die Methode "SagHallo" aufruft und einen String uebergibt (sorry mit den Umlauten - sitze dienstlich in den USA und schreibe gerade mit meinem US-Rechner).

Viele Gruesse
Chris