Announcement

Collapse
No announcement yet.

Bestimmtes WPF UserControls finden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bestimmtes WPF UserControls finden

    Hallo zusammen.

    Ich arbeite langsam mich in NET WPF ein.

    Habe eine Form, in der sich ein Menü befindet.
    In der Form ist eine ViewBox.
    Wenn ich nun auf einen Menüeintrag klicke soll mein UserControl in der ViewBox hinzugefügt werden. Das funktioniert auch.

    // UserControl hinzufügen
    VerbindungsDaten uc = (VerbindungsDaten)Application.LoadComponent(new Uri("VerbindungsDaten.xaml", UriKind.RelativeOrAbsolute));
    this.viewbox1.Child = uc;

    // Handler für Click hinzufügen
    UIElement target = uc.button2 as UIElement;
    target.AddHandler(UIElement.MouseLeftButtonDownEve nt, new MouseButtonEventHandler(clickme), true);


    Aber was ich gerne hätte (und nicht hinbekomme):
    Beim Click soll geprüft werden, on mein UserControl schon da ist.
    Wenn Ja, soll das UserControl auf Visibility.Visible gesetzt werden, wenn Nein soll es hinzugefügt werden (siehe obigen Code).

    Mein Ansatz war:
    foreach (UIElement uie in this.viewbox1.Child)
    {
    if (uie.GetType() == typeof(VerbindungsDaten))

    Geht aber nicht.
    Was muss ich machen, damit ich prüfen kann, ob UserControl schon vorhanden ist?

    Wäre für jede Anwtort sehr dankbar.

    Gruß

    Reinhard

  • #2
    - Setze einen boolschen Wert, wenn du das Control anlegst und frage diesen ab
    - prüfe, ob uc != null ist
    - ....
    Christian

    Comment


    • #3
      Hallo Christian, danke für Deine Antwort.

      Habe ewig (4 Std.) gelesen, bis auf folgendes gekommen bin:
      Damit get es!

      if (viewbox1.Child != null)
      {
      var childObjectsCollection = LogicalTreeHelper.GetChildren(viewbox1);
      foreach (var child in childObjectsCollection)
      {
      if (child.GetType() == typeof(Mieter))
      {
      //Messagebox nur zum Testen
      MessageBox.Show("Mieter");
      var c = (Mieter)child;
      c.Visibility = Visibility.Hidden;
      }
      }
      }
      else
      {
      AddVerbindungsdaten();
      }

      Trotzdem vielen Dank.

      Gruß
      Reinhard

      Comment


      • #4
        Ich halte es für wenig sinnvoll, ganze Formularbäume zu durchsuchen, um festzustellen, ob ein Objekt initialisiert ist....
        Christian

        Comment

        Working...
        X