Hallo,
ich habe bisher nix mit eigenen Events gemacht. Mein erster Ansatz funktioniert nicht. Im Moment sehe ich keinen Fehler.
Das Projekt besteht aus zwei WPF-Fenster mit zugehörigem Viewmodel.
Klasse 1 (Hauptfenster):
Klasse 2:
LocalEvent ist
Wenn ich mir Beispiele anschaue, dann rufen übergeordnete Klassen die EventHandler untergeordneter Klassen auf. Ich brauche es aber andersrum. Konkret geht es darum, dass im Hauptfenster ein TabControl-Element sitzt und Events von den untergeordneten TabItems empfangen soll. Die TabItems sind alle unterschiedlichen Typs (UserControls).
Wie setzt man denn sowas um?
Gruß
MQ
--EDIT:--
Sender und Empfänger verwechselt. Subwindow muss sich für das Event des MainWindow registrieren und nicht ummekehrt!
--
ich habe bisher nix mit eigenen Events gemacht. Mein erster Ansatz funktioniert nicht. Im Moment sehe ich keinen Fehler.
Das Projekt besteht aus zwei WPF-Fenster mit zugehörigem Viewmodel.
Klasse 1 (Hauptfenster):
C#-Quellcode
- public class MainWindowViewModel {
- public class MainWindowEventArgs :EventArgs {
- public int Wert { get; set; }
- public MainWindowEventArgs() {
- }
- }
- public delegate void MainWindowEventHandler(object s, MainWindowEventArgs e);
- public event MainWindowEventHandler EventHandler;
- public MainWindowViewModel() {
- EventHandler += MainWindowViewModel_EventHandler;
- }
- public void Weiter() {
- var o = new SubWindow();
- o.Show();
- }
- private void MainWindowViewModel_EventHandler(object s, MainWindowEventArgs e) {
- MessageBox.Show($"Der Wert ist {e.Wert}");
- }
- }
Klasse 2:
LocalEvent ist
null
. Soweit ich verstanden habe, ist LocalEvent solange null, bis sich eine Klasse für das Event einschreibt. Das Hauptfenster hat sich für das Event registriert aber das scheint nicht ausreichend.Wenn ich mir Beispiele anschaue, dann rufen übergeordnete Klassen die EventHandler untergeordneter Klassen auf. Ich brauche es aber andersrum. Konkret geht es darum, dass im Hauptfenster ein TabControl-Element sitzt und Events von den untergeordneten TabItems empfangen soll. Die TabItems sind alle unterschiedlichen Typs (UserControls).
Wie setzt man denn sowas um?
Gruß
MQ
--EDIT:--
Sender und Empfänger verwechselt. Subwindow muss sich für das Event des MainWindow registrieren und nicht ummekehrt!
C#-Quellcode
- public class MainWindowViewModel {
- public class MainWindowEventArgs :EventArgs {
- public int Wert { get; set; }
- public MainWindowEventArgs() {
- }
- }
- public delegate void MainWindowEventHandler(object s, MainWindowEventArgs e);
- public MainWindowViewModel() {
- }
- public void Weiter() {
- var o = new SubWindow();
- o.vm.LocalEvent += LocalEventHandler;
- o.Show();
- }
- private void LocalEventHandler(object s, MainWindowEventArgs e) {
- MessageBox.Show($"Der Wert ist {e.Wert}");
- }
- }
--
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MasterQ“ ()