(Dragablz) TabControl - Event wenn Tab geschlossen wurde im UserControl

  • WPF

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von BornToBeRoot.

    (Dragablz) TabControl - Event wenn Tab geschlossen wurde im UserControl

    Hallo Community,

    ich habe ein TabControl (von Dragablz) in dem dynamisch Tabs hinzugefügt werden (in meinem NETworkManager/Remote Desktop).

    Gibt es eine Möglichkeit wenn der Tab geschlossen wird, das UserControl zu benachrichtigen (damit im rdpclient ein disconnect durchgeführt wird)?

    Alternativ, kann man abfangen ob das UserControl geschlossen wurde? Das Unload-Event prüft ja nur ob das UserControl sich im VisualTree befindet... das kann ich leider nicht nutzen -.-

    Gruß
    BornToBeRoot
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    Hallo

    Wie befüllst du denn deine Tabs?
    ​Ich nehme mal an das du eine Klasse hast mit einer ObservableCollection(of remotedesktop)
    ​Da kannst du in deiner ViewModel-Klasse ja das Ereigniss CollectionChanged abonnieren und schön darauf reagieren.

    ​Ohne Binding müsstest du hier selbst anlegen und das Event erstmal schaffen.

    ​Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Jo ich habe eine ObservableCollection, jedoch im RemoteDesktopViewModel: github.com/BornToBeRoot/NETwor…RemoteDesktopViewModel.cs
    Hier befindet sich nur das TabControl und die gespeicherten Sitzungen.

    Jeder Tab beinhaltet eine Instanz von RemoteDesktopControl
    github.com/BornToBeRoot/NETwor…oteDesktopControl.xaml.cs

    Wenn ein Tab geschlossen wird, soll genau dieses Control die Aktion rdpClient.Disconnect() durchführen...
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    Hallo

    Ich habe mir dieses Dragablz jetzt nicht ganz genau angesehen aber ich nehme mal an das wenn ein Tab geschlossen wird in einem TabItem von dem Control Dispose aufgerufen wird.
    Ich habe gesehen das du weder in der Klasse noch in deiner ViewModelBase (von einer anderne klasse erbt deine Klasse jedoch auch nicht) kein IDospesable implementiert wurde.
    Ist das in jeder deine VM klassen so? Eher schlecht.

    Wenn ich heute kurz Zeit habe lade ich mal dieses Control und versuche mir das anzusehen wenn du möchtest.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Hallo

    Habe jetzt einen kleinen naiven Test gemacht und es klappt.

    Anbei das Projekt. (Ist jetzt aber nur schnell in der Arbeit runtergetippt <X , es geht ja ums Prinzip)
    Ich habe IDisposable implementiert, ist aber für die funktionsweise kein muss. Du kannst ja auch eine Methode Disconnect in der Vm Klasse haben und wenn diese Friend ist kannst du es ja auch vom übegeordneten VM aufrufen.
    Ich habe es nun einfach mit der Dispose Methode gemacht.



    Hier das Projekt
    Dateien
    • DragablzTest.zip

      (1,12 MB, 10 mal heruntergeladen, zuletzt: )
    If _work = worktype.hard Then Me.Drink(Coffee)
    OK hat super funktioniert. Danke !!!

    Das TabItem hostet ja ein RemoteDesktopControl (UserControl). Im Dispose() rufe ich einfach die Methode RemoteDesktopControl.OnClose() auf um den Disconnect zu machen.
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    Jo. Das hier ist bis jetzt das einzigste das nicht mehr benötigt wird (wenn ein Tab geschlossen wurde). Alles andere soll wenn Möglich auf bleiben, damit es nicht neu geladen werden muss.
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!