Announcement

Collapse
No announcement yet.

wpf bindung zwischen fenstern

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

  • wpf bindung zwischen fenstern

    Hallo,

    ich versuche gerade eine Textbox an eine Listbox zu binden, welche mit LinqtoSQL gefüllt ist. Dies funktioniert auch super!


    <TextBox Margin="15,124,18,114" Name="textBox2">
    <Binding XPath="" ElementName="listbox" Path="SelectedItem.bezeichnung" />
    </TextBox>

    Jezt möchte ich aber dass die textbox von window2, den selectierten eintrag der listbox aus window1 emfangen kann. Leider funktioniert der oben gezeigte code nicht, wenn ich z.B. einfach ein "Window1.listbox" schreibe...

    weiß jemand für dieses geschehen rat, also "übergreifend" zu binden?


    MfG Flo
    Die Taschenlampe!

    Die perfekte Taschenlampe für Ihr Windows Phone!

    - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
    - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


    Hier gehts zu APP!

  • #2
    Möchtest Du die Textbox einfach mit dem Text aus der Listbox befüllen? Oder soll das DataBinding mit demselben Element aus der Listbox sein? Das ist ein gewaltiger Unterschied

    Comment


    • #3
      Hi!

      Im Prinzip spielt das eine Nebenrolle für mich, da ich das eigentlich hinbekomme. Nehmen wir an ich will nur den "Text" des gewählten Listboxitems haben. Wichtig ist mir nur dass die Textbox aus "Window2" den Text der Listbox aus "Window1" hat!

      MfG
      Die Taschenlampe!

      Die perfekte Taschenlampe für Ihr Windows Phone!

      - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
      - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


      Hier gehts zu APP!

      Comment


      • #4
        Das kommt natürlich jetzt drauf an wie Deine Forms organisiert sind. Im Endeffekt musst Du nur dafür sorgen, dass Form1 Form2 kennt.
        Wo erzeugst Du denn die beiden Forms?

        Comment


        • #5
          hey,

          es geht nicht um Forms, sondern um Windows! WPF! Beide Forms werden im vorhinein im Designer erstellt!

          Wie sieht der XAML Code aus, dass window 2 window 1 kennt?

          MfG!
          Die Taschenlampe!

          Die perfekte Taschenlampe für Ihr Windows Phone!

          - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
          - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


          Hier gehts zu APP!

          Comment


          • #6
            trotzdem funktioniert es genauso wie bei Windows Forms. Die einzelnen Windows muss man instanziieren und benutzen genau wie Windows Forms auch.

            Das funktioniert ganz wunderbar bei mir:

            [highlight=c#]
            public partial class Window1 : Window
            {
            public Window1()
            {
            InitializeComponent();
            }

            private void button1_Click(object sender, RoutedEventArgs e)
            {
            Window2 win = new Window2();
            win.label1.Content = "Test";

            win.ShowDialog();
            }
            }
            [/highlight]

            Das ist auch die einfachste Möglichkeit etwas im anderen Fenster zu setzen. Das Label kannst Du auch durch eine Textbox ersetzen.

            Das was bei Dir Window2 heisst ist eine Klasse. Um diese allerdings zu verwenden muss man sie mit new instanziieren. So wie oben geschehen.

            Comment


            • #7
              Hi!

              Danke erstmal! Klappt wunderbar. Nur wollte ich dieses eben im XAML-Code realisieren, so dass eben Bindungen weitestgehend nicht im C#-code auftauchen.

              Wie oben beschrieben:

              <TextBox Margin="15,124,18,114" Name="textBox2">
              <Binding XPath="" ElementName="listbox" Path="SelectedItem.bezeichnung" />
              </TextBox>

              (.bezeichnung = Aus Datenbank die Spalte bezeichnung)
              funktioniert das super!

              Nur wenn ich z.B. so schreibe:

              <TextBox Margin="15,124,18,114" Name="textBox2">
              <Binding XPath="" ElementName="Window1.listbox" Path="SelectedItem.bezeichnung" />
              </TextBox>

              zeigt die Textbox keinen Inhalt. Wäre dies überhaupt "rein" in XAML zu lösen, oder scheitert das bis jetzt noch?

              Danke im voraus!

              MfG
              Die Taschenlampe!

              Die perfekte Taschenlampe für Ihr Windows Phone!

              - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
              - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


              Hier gehts zu APP!

              Comment


              • #8
                Ich denke wenn du es so anlegst sollte das klappen, allerdings würde ich Dir diesen Ansatz nicht empfehlen. Es ist nicht gut, wenn Du zu viele Abhängigkeiten zwischen den Windows/Formularen hast:

                [highlight=c#]
                public partial class Window1 : Window
                {
                private Window2 _window2;

                public Window1()
                {
                InitializeComponent();

                _window2 = new Window2(this);
                _window2.Show();
                }
                }

                public partial class Window2 : Window
                {
                private Window1 _window1;

                public Window2(Window1 window1)
                {
                InitializeComponent();

                _window1 = window1;
                }
                }

                <TextBox Margin="15,124,18,114" Name="textBox2">
                <Binding XPath="" ElementName="_window1.listbox" Path="SelectedItem.bezeichnung" />
                </TextBox>
                [/highlight]

                Bin allerdings kein WPF Guru. Allerdings würde ich Dir das SO nicht empfehlen. Ich würde es so machen wie ich es oben schon beschrieben habe.
                Allgemein würde ich etwas vorsichtig mit DataBinding sein. Ich weiss es ist bequem, allerdings gibst Du auch viel Kontrolle und Einflussmöglichkeiten auf, wenn Du DataBinding verwendest. Ich verwende DataBinding mittlerweile nur noch für sehr einfache Anwendungsfälle.

                Comment


                • #9
                  Hi!

                  Also vielen Dank für deine Hilfe! Hat mich sehr weitergebracht. Werde auch dein oben gezeigtes Beispiel verwenden!

                  MfG
                  Die Taschenlampe!

                  Die perfekte Taschenlampe für Ihr Windows Phone!

                  - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
                  - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


                  Hier gehts zu APP!

                  Comment

                  Working...
                  X