none
Property in App.xaml.cs ablegen und verfügbar machen RRS feed

  • Frage

  • Guten Morgen,

    ich habe eine WinUI3 Desktop-App erstellt mit Reunion 0.5. Dort gibt es ja die Klasse App.xaml.cs. 

    Ich würde dort ganz gerne (nur als Beispiel) eine public string Blabla reinlegen, und diese dann von z.B. MainWindow.xaml.cs aus wieder "abrufen". Also als Beispiel in MainWindows.xaml.cs

    Txt_Name.Text = App.Username;

    Aber leider sehe ich diese öffentliche Eigenschaft nicht.

    Sowohl unter WindowsForms-App als auch mit AspNet-Anwendungen, hatte ich das zentral lösen können. Bei WindowsForms-App hatte ich z.B. die Klasse für ApplicationEvents bzw. MyApplication war das glaube ich. Dort wurden DMX-Geräte beim starten der Anwendung initialisiert, beim beenden "runtergefahren" und während der Anwendung konnte ich von "überall" auf die Geräte und ihre Zustände zugreifen.

    Wie mache ich das aber bei einer WinUI3-Desktop-App? Das ich beim starten der App einen zentralen Ort habe, wo aktuelle Zustände usw. abgelegt sind, und wo ich von jedem beliebigen Fenster bzw. Klasse aus zugreifen kann?

    Gruß
    Andy

    Freitag, 16. April 2021 05:55

Antworten

  • Hi Andy,
    füge einfach eine statische (Shared in VB) Eigenschaft entweder in die App.xaml.cs ein oder erstelle eine static class mit gewünschten static member.

    Z.B. so:

    namespace WpfApp1
    {
      class Settings
      {
          public static string cnMySql { get; } = "Server=localhost;Database=test;Uid=dev1;Pwd=xxx;";
      }
    }

    Und die Nutzung dann z.B. so:

        private DataTable GetData()
        {
          using (MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM Tab1", WpfApp1.Settings.cnMySql))
          {
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
          }
        }


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks


    Freitag, 16. April 2021 10:50

Alle Antworten

  • Hi Andy,
    füge einfach eine statische (Shared in VB) Eigenschaft entweder in die App.xaml.cs ein oder erstelle eine static class mit gewünschten static member.

    Z.B. so:

    namespace WpfApp1
    {
      class Settings
      {
          public static string cnMySql { get; } = "Server=localhost;Database=test;Uid=dev1;Pwd=xxx;";
      }
    }

    Und die Nutzung dann z.B. so:

        private DataTable GetData()
        {
          using (MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM Tab1", WpfApp1.Settings.cnMySql))
          {
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
          }
        }


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks


    Freitag, 16. April 2021 10:50
  • Hi Andy,
    füge einfach eine statische (Shared in VB) Eigenschaft entweder in die App.xaml.cs ein...

    Static - Verdammt nochmal, so was einfaches. Es war static was mir einfach nicht einfallen wollte.

    Ich hatte nur public string Test = "Blabla"; zum testen gemacht und mich gewundert, warum ich das in MainWindows.xaml.cs nicht sehe. 

    Danke Peter!

    Gruß
    Andy

    Freitag, 16. April 2021 17:42