C# - Label.Content wird nicht angezeigt

  • WPF

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von fichz.

    C# - Label.Content wird nicht angezeigt

    Moin,

    Ich habe ein WPF Window (MainWindow.xaml.cs) und eine Klasse (core.cs). Vom Window aus rufe ich eine Methode in der Klasse auf welche mir ein Label im Window setzen soll. Klingt komisch, ist aber so.
    Das Problem hierbei ist das der Content im Label einfach nicht "aktuallisiert" wird. Der Content wird gesetzt ist auch auf blaaaa, nur in dem Window ändert sich nix.

    Kann sich das einer von euch erklären?

    MFG

    Quellcode des Windows

    C#-Quellcode

    1. namespace TestLabelAndwendung
    2. {
    3. /// <summary>
    4. /// Interaktionslogik für MainWindow.xaml
    5. /// </summary>
    6. public partial class MainWindow : Window
    7. {
    8. public MainWindow()
    9. {
    10. InitializeComponent();
    11. }
    12. private void btnLos_Click(object sender, RoutedEventArgs e)
    13. {
    14. core c = new core();
    15. c.refresh();
    16. }
    17. }
    18. }


    Quellcode der Klasse

    C#-Quellcode

    1. namespace TestLabelAndwendung
    2. {
    3. class core
    4. {
    5. public void refresh()
    6. {
    7. MainWindow mw = new MainWindow();
    8. mw.lblText.Content = "blaaaa";
    9. }
    10. }
    11. }
    Mit Binding und den MVVM Pattern wär das kein Problem, du müsstest auch solche Aktualisierungen nicht mehr manuell machen. Sondern bindest an eine Property und wenn die geändert wird, aktualisiert sich automatisch die View (dein Window). Generell sollte man in WPF nicht wie in WinForms arbeiten.
    Ist auch klar. Du erstellt eine neue Instanz von MainWindow. Dieser weist du dem Label einen neuen Wert zu.
    Nun hast du aber 2 Instanzen des MainWindows (und in der die du NICHT siehst wurde das Label geändert). Ich hab mit WPF noch nicht gearbeitet aber was ich so höre arbeitet man hier mit Bindings und dem MVVM Pattern.

    Möglich wäre es jedoch, wenn du im Konstruktur von Core deine aktuelle MainWindow-Instanz übergibst und in dieser dann das Label änderst.
    Empfehle ich aber nicht.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten